Cronjobはスケジュールされた時間より前に実行されますが、何が問題なのでしょうか?


10

19日から23日までの土曜日に予定されているcrontabを下回っていますが、なぜ20日(金曜日)に実行されたのかわかりません。推測は?

00 21 19-23 * 6 <command>

1
/etc/cron.d/mdadmUbuntuやDebianでインスピレーションを得ているかもしれません。これは、各月の第一日曜日を実行する方法である:57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
kasperd

おかげでkasperd 0 18 * * 6 [date +\%d -le 07] && <task> は私にとってはうまく機能しており、毎月第1土曜日に実行する必要があります。
simer 2015年

回答:


16

そのCron式は次のように変換されます。

At 21:00 on the 19, 20, 21, 22 and 23rd of every month and every Saturday.

そのため、20日の金曜日に実行するようにcronに明示的に指示しました。これは次の理由によります:

When the schedule specifies both date and weekday, they're combined with a logical OR,
i.e. the job will run if current_minute == scheduled_minute 
&& current_hour == scheduled_hour && current_month == scheduled_month && 
(current_day == scheduled_date OR current_weekday == scheduled_weekday).

この情報は、この便利なCronツールからのものです。http//crontab.guru/

土曜日の特定の日にジョブを実行するには、次のコマンドを使用できます。

00 21 19-23 * * test $(date +%u) -eq 6 && command

このソリューションは、crontabの曜日と月の曜日からのものですか?


6
%これはcronjobsで特別な意味を持つことに注意してください。コマンドの標準入力を分離します。
user1686 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.