クロンタップの混乱

クロンタップの混乱

geeksforgeeks crontab ページでは、次の cronjob を理解できません。

30 08 10 06 * /home/maverick/full-backup

6月10日午前8時30分に進行されることがわかっていますが、最後の時間のため恥ずかしいです。これは6月10日の週に毎日実行されることを意味しますか?または曜日がわからないので、*はそれが終わる日を意味します。

誰かが明確にできますか?

答え1

通常、*週の列に表示される曜日は、このタスクのスケジュールには関係ありません。これは毎年6月10日に行われます。もしあなたならした曜日のエントリ(「水曜日」など)がある場合、タスクは6月10日と6月の毎週水曜日に発生します。man 5 crontabどのシステムでジョブをスケジュールしても、実装が異なる可能性があるため、お問い合わせするのが最善ですcron

また、マンページは、以下のようにあいまいまたは読みにくい場合があります。

分、時、月フィールドが現在時刻と一致し、2つの日付フィールド(日または曜日)のうちの1つ以上が現在時刻と一致する場合、cron(8)によってコマンドが実行されます(「注意」を参照)。以下)。

そして:

注:コマンドが実行される日付は、日付と曜日の2つのフィールドで指定できます。両方のフィールドが制限されている場合(つまり*ではありません)、両方のフィールドの1つが現在の時刻と一致するときにコマンドが実行されます。たとえば、30 4 1,15 * 5毎月1日と15日、毎週金曜日の午前4時30分にコマンドが実行されます。

IMO、「両方のフィールドが制限されている場合」制限は実際には少ないあるフィールドは制限され、他のフィールドはワイルドカードとして扱われる場合と比較して制限されます。

比較する:

30 08 10 06 * /home/maverick/full-backup

上記の作業は6月10日にのみ行われます。

30 08 * 6 Wed /home/maverick/full-backup

上記の作業は6月毎週水曜日に行われます。

30 08 10 06 Wed /home/maverick/full-backup

上記の作業は6月の毎週水曜日と6月10日に行われます。

関連情報