web-dev-qa-db-ja.com

crontabの曜日と月の日?

私はこれをいくつかの異なるLinuxおよびfreebsdシステムの/ etc/crontabに追加しました。

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now

毎月第3火曜日に再起動したい。ただし、すべてのシステムは今月の第3水曜日(19日)に再起動しました。

私は何が間違っているのですか?

更新:以下のRanonの回答のおかげで、以下のリビジョンが機能するように見えます。誰かが確認できますか、それとももっと良い方法がありますか?

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now
14
ane

見て man 5 crontab

注:コマンドの実行日は、曜日と曜日の2つのフィールドで指定できます。両方のフィールドが制限されている場合(つまり、*でない場合)、いずれかのフィールドが現在の時刻と一致したときにコマンドが実行されます。たとえば、「30 4 1,15 * 5」を指定すると、毎月1日と15日、および毎週金曜日の午前4時30分にコマンドが実行されます。ただし、コマンドにテストを追加することで、目的の結果を得ることができます(以下の「CRONファイルの例」の最後の例を参照してください)。

したがって、サーバーは毎日15〜21日、および毎週火曜日に再起動する必要があります。

マンページの例を見てください:

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"
16
Jens Erat