毎月第1水曜日にLinuxサーバーをシャットダウンする

毎月第1水曜日にLinuxサーバーをシャットダウンする

crontab エントリを次のように記述しました:

00 19 1-7 * 3 /sbin/init 0

毎月第 1 水曜日に Linux サーバーがオフになるはずです。残念ながら、サーバーは今日 (木曜日) オフになりました。なぜこのようなことが起こるのか、また、どうすれば修正できるのか、どなたか教えてください。

答え1

からcrontab(5):

   Note: The day of a command's execution can be specified by two fields --
   day of month, and day of week.  If  both  fields  are  restricted  (ie,
   aren't  *),  the command will be run when either field matches the cur-
   rent time.

これはあなたのクローンタブエントリは期待どおりに動作しません。コマンドは毎月 1 日から 7 日まで毎日、および毎週水曜日に実行されます。

上記の理由により、クローンだけでは、その月の最初の水曜日かどうかは判断できません。ただし、次の条件を使用して1つの条件を確認できます。クローンそしてもう1つをチェックするテストそして日付:

00 19 1-7 * * [ $(/usr/bin/date +\%w) = 3 ] && /sbin/init 0

使い方:

  • コマンドは毎月 1 日から 7 日まで毎日実行されます。

  • $(/usr/bin/date +\%w)曜日を返します。

  • [ ... = 3 ] &&その曜日が水曜日かどうかを確認します(3)。

  • そうであれば/sbin/init 0実行されます。

パーセント記号は特別な意味を持つため、エスケープする必要があることに注意してください。クローン

関連情報