特定の時間にシャットダウンをスケジュールできることがわかり、shutdown -h 21:45
繰り返しの特性のため、crontabを使用してこれらのタスクを実行しないでください。特定の時間に終了をスケジュールする方法日付たとえば、8月31日20時?
答え1
このat
コマンドは、将来のワンタイム実行をスケジュールするために使用されます。
例えば
% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019
("<EOT>"はCtrl-Dを押すと生成されます)
% atq
161 Sat Aug 31 20:00:00 2019 a sweh
ここにコマンドを入力できますshutdown
。
答え2
これは確実な方法ですが、at
シャットダウン後も生き残ると思ったので、シャットダウン予定時間前にコンピュータを再起動すると、スケジュールされた時間に再びシャットダウンすることがあります。したがって、bashとGNUの日付を使用すると、遅延終了を使用できます。
/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
注:これは1分まで正確です。 UNIX epoch 以降、スケジュールされた時間を秒に変換し、差を計算し、分に変換し、それを終了遅延として使用するように動作します。スケジュールされた時間が経過すると正常に動作しません。
答え3
最新のUbuntuバージョンはsystemdを使用しており、既存のスケジューラとワンタイムコマンドatd
の関連スケジューラがインストールされていないか実行されていない場合at
ワンタイムオーダー予約可能systemd-run
手動で作成するよりも少し簡単です。systemd timer
:
systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now
答え4
今年のみジョブを実行します。
0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now
毎年このタスクを実行します。
0 20 31 8 * /sbin/shutdown now