crontabの曜日と月の日付


14

これをいくつかの異なる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

回答:


16

をご覧ください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"

6
これは、設計上のバグのようです。毎日15〜21日と毎週火曜日が必要な場合は、2つの個別のcrontabエントリを作成します。別のテストに頼らなければならないことは、見苦しいハックです。とはいえ、回避策を提供してくれてありがとう!
ローレンスゴンサルベス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.