特定の日に休業

特定の日に休業

特定の時間にシャットダウンをスケジュールできることがわかり、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

関連情報