1

私が持っている3つのスクリプトのcronスケジュールを設定するのに助けが欲しいです。最初のスクリプトを毎月第1火曜日に実行し、2番目のスクリプトを毎月第2火曜日に実行し、3番目のスクリプトを毎月第3火曜日に実行するようにスケジュールする必要があります。これが私がこれまでに持っているものです。

# Run first script on the 1st Tuesday of every month at 9:00 AM
0 9 1,2,3,4,5,6,7 * 2 wget -q -O /dev/null http://site.com/first-script

# Run second script on the 2nd Tuesday of every month at 9:00 AM
0 9 8,9,10,11,12,13,14 * 2 wget -q -O /dev/null http://site.com/second-script

# Run third script on the 3rd Tuesday of every month at 7:00 AM
0 7 15,16,17,18,19,20,21 * 2 wget -q -O /dev/null http://site.com/third-script

これらのスクリプトは、毎月第1火曜日、第2火曜日、第3火曜日、およびその月の毎日1〜21日に実行されると思います。私が読んだことから、曜日と日はANDであるように見えますが、それは本当ですか?

うまくいけば、これはcronで可能です。そうでない場合は、スクリプトを実行するかどうかの決定をスクリプト自体の内部に移動する必要があります。

4

4 に答える 4

4

日付チェックロジックをスクリプトに直接入れたくない場合は、スクリプトを実行する前に、cronジョブシェルコマンド部分に条件付きの曜日をチェックさせることができます。

# Run first script on the 1st Tuesday of every month at 9:00 AM
0  9  1-7    *  *  [ "$(date '+\%a')" = "Tue" ] && wget -q -O /dev/null http://example.com/first-script

# Run second script on the 2nd Tuesday of every month at 9:00 AM
0  9  8-14   *  *  [ "$(date '+\%a')" = "Tue" ] && wget -q -O /dev/null http://example.com/second-script

# Run third script on the 3rd Tuesday of every month at 7:00 AM
0  7  15-21  *  *  [ "$(date '+\%a')" = "Tue" ] && wget -q -O /dev/null http://example.com/third-script

[ $(date'+ \%a') "= "Tue"]条件が成功すると、スクリプトが実行されます。cronは%を特殊文字として扱うため、%記号はバックスラッシュでエスケープする必要があります。

週に7日あるため、月の最初の火曜日は1〜7の範囲、2番目は8〜14の範囲、3番目は15〜21の範囲であることが保証されます。

最初の火曜日をキャプチャするには、次のことはできません。

0  9  1-7  *  2 && wget -q -O /dev/null http://example.com/some-script

... 1〜7(日)と2(曜日)が実際にORされるためです。Cronは、何らかの理由でこれら2つのフィールドを他のフィールドとは異なる方法で処理します。上記の例では、スクリプトは1〜7の範囲で毎日実行され、毎週火曜日に実行されます

于 2017-07-25T13:36:36.063 に答える
2

cronは次のように設定できます。

00 09 1-7,8-14,15-21 * 2 / path / myscript

これにより、第1火曜日、第2火曜日、および第3火曜日の午前9時にスクリプトが実行されます。

于 2014-12-30T06:48:22.213 に答える
1

別の方法は、毎週火曜日に実行するメインスクリプトを作成し、火曜日が火曜日であることを確認し、それに応じてその時間が適切なセカンダリスクリプトを呼び出すことです。

0 7,9 * * 2 wget -q -O /dev/null http://site.com/main-script

お役に立てば幸いです。

ご挨拶。

于 2012-11-28T20:34:04.857 に答える
1

それらはORです。

毎週火曜日と記載されている日に実行されます。

于 2013-11-26T09:12:05.350 に答える