毎週第2水曜日に実行するCron?


9

ジョブを毎月水曜日に実行するように、ジョブをcronする方法を見つける必要があります。これは可能ですか?

linux  cron 

1
この質問は適切な答えを提供するように見えます。
スカーカー、2011年

1
ええ、でもその質問は水ではなく火についてです;)しかし、受け入れられた答えは賢いです。
エドロフリン2011年

>>ええ、でもその質問は水ではなく火についてです;)受け入れられた答えは賢いですが... Tueを水に変更するのはそれほど難しいことですか?
ajreal 2011年

0 * * * 3 test $(date \ +%u)-eq 3 && echo "start run me"これを試してください。ライナー質問がかなり曖昧であるため、回答に貼り付けませんでした。

回答:


14

crontabのマンページ(残念ながらオンラインで見つけることができないようです)には、次の例が示されています。

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

これをあなたの目的に合わせる...

0 4 8-14 * *    test $(date +\%u) -eq 3 && job.sh

3
この回答を編集しようとしている人にとって、[曜日]フィールドを使用しない理由は、日と曜日の両方が制限されている(つまり、制限されていない*)場合、どちらかが一致したときにコマンドが実行されるためです。。
Hasturkun 2013年

crontabマンページ:manpages.debian.org/cgi-bin/man.cgi
query

1
%uを脱出する必要があることがわかりました。そのため、date +\%u
Antony D'Andrea

3

曜日トリックと曜日の組み合わせを使用することにより、外部スクリプトの実行を回避できます。

# Run on every second Wednesday of the month
0 4 8-14 * Wed job.sh

これにより、別の外部プログラムの実行も回避されます。8-14は、月の第2週に一致するすべての日を選択します。次に、その水曜日だけを除外します。


1

単独でcronを使用することはできませんが、テストを行うスクリプトを週に1回呼び出すことができます。

crontabで、毎週水曜日の12.00にsecond_wed.shを実行します。

0 12 * * 3 /home/you/bin/second_wed.sh

second_wed.sh:

#!/usr/bin/env bash
day_of_month=`date +"%
if [ $day_of_month -gt 7 -a $day_of_month -lt 15 ]; then
  # Call your program here instead of 'ls'…
  ls
fi

1

この答えに基づいて、次のことができます:

00 12 * * Wed expr `date +\%d` \> 7 \& `date +\%d` \< 15 >/dev/null && runJob.sh

1

CentOS 7サーバーの場合、これは私にとって機能する構文のようです。[との周りのスペースに注意してください]。それを理解するにはしばらく時間がかかりました。

これtest.shにより、月の第2水曜日の13:07 / 1:07 PMにファイルが実行されます。(0 =日曜日、1 =月曜日、2 =火曜日、3 =水曜日など)

07 13 8-14 * * [ `date +\%u` = 3 ] &&  /root/scripts/test.sh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.