shutdown -h 21:45
を使用して特定の時間にシャットダウンをスケジュールでき、そのような性質のため、crontabを繰り返し使用しないでください。 8月31日午後20:00のように、特定のdateのシャットダウンをスケジュールするにはどうすればよいですか?
最近のUbuntuバージョンはsystemdを使用し、従来のatd
および関連するat
スケジューラーが1回限りのコマンドにインストールされていないか実行されていない1回のコマンド systemd-run
これは手動で systemd timer
:
systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now
at
コマンドは、将来の実行を1回だけスケジュールするためのものです。
例えば.
% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019
(「<EOT>」は、control-Dを押して作成されました)
% atq
161 Sat Aug 31 20:00:00 2019 a sweh
shutdown
コマンドをここに置くことができます。
at
はこれを行うための明白な方法ですが、シャットダウン後も存続すると思います。そのため、マシンがスケジュールされたシャットダウンの前に再起動すると、スケジュールされた時間に再びシャットダウンする可能性があります。したがって、bashとGNU日付を使用すると、遅延シャットダウンを使用できます。
/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
注意:これは1分程度の正確さです。これは、スケジュールされた時間をUNIXエポックからの秒数に変換し、差を計算して分に変換し、これをシャットダウンの遅延として使用することで機能します。予定時刻が過ぎていると正常に動作しません。
より良いshutdown
コマンドを使用します。
Van Smoorenburg、Upstart、およびsystemd shutdown
コマンドでは、日付を指定できません。ただし、BSDのshutdown
コマンドは、シャットダウンするタイミングの指定に日付値をyymmddhhmm
の形式で取ります。これは4BSD以来ずっとそうであり、FreeBSDとOpenBSDでもそうです。 NetBSDはそれをccyymmddhhmm
に拡張しました。
NoshツールセットはBSDでも使用できるため、shutdown
コマンドに同じ機能を与え、NetBSDごとにCCYYMMDDHHMM
に拡張しました。また、noshツールセットはLinuxでも使用できるため、日付を取得するシャットダウンコマンドをLinuxに提供します。
もちろんnosh system-manager
。他のシステムでも動作します。これは、プロセス#1に信号を送信して処理を実行します。同じ信号は、systemd
などの他のシステムマネージャでも認識され、これを使用してシャットダウンすることもできます。
あなたはそれ、またはそのようなツールを使用することができます。または、他のLinux shutdown
プログラムの作者に、それらのツールをBSD shutdown
と同じように拡張するように説得することもできます。
shutdown
。 noshツールセットのマニュアルページ。ソフトウェア。system-manager
。 noshツールセットのマニュアルページ。ソフトウェア。shutdown
。 System Manager's Manual。 NetBSDマニュアルページ。 2011-11-04。shutdown
。 FreeBSDシステム管理者用マニュアル。 2018-01-01。shutdown
。 OpenBSDマニュアルページ。 2015-01-21。今年のみジョブを実行するには:
0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now
毎年ジョブを実行するには:
0 20 31 8 * /sbin/shutdown now