私は次のように仕事を整理しました。
* * 6-8 * 1-5 echo "test" >>/tmp/test.log 2>&1
これは6日、7日、8日3日にのみ実行されると予想されます。ところが今日が18日なのにまだ進行中ですね。この職業には何の問題がありますか?特定の日にのみ実行するにはどうすればよいですか?
答え1
その月の日付と曜日はORにリンクされているため、あなたの例では、cronは6日、7日、または8日に実行されます。または月曜日から金曜日まで。 18日が月曜日なので運営されます。これは完全に直感的ではありません。
必要なアクションを取得するには(平日の場合は6日、7日、8日に実行)、次のようにします。
* * * * 1-5 date '+%d' | grep '[678]' && echo "test" >>/tmp/test.log 2>&1
答え2
月日指定(フィールド-3、1基準)および月日フィールド(5)が指定されます。この場合、一致することはcrontabが実行中であることを意味します。