Crontab 和 dayofweek

Crontab 和 dayofweek

我正在尝试设置一个每周日运行一次的 cron 作业。我认为我应该使用“dayofweek”位置并将其设置为 0,但我不确定这是否会覆盖 day 位置的“*”。

45 2 * * 0 /scripts/backup.sh

它是否正确?

答案1

您说得对 - 正如已经报道的那样。

请注意,安排在星期日 02:45 执行的作业不会在春季时钟向前跳转的星期日运行(而安排在星期日 01:45 执行的作业将在秋季时钟向后跳转的星期日运行两次)。推论:如果您可能在时钟在冬令时和夏令时(标准时间和夏令时)之间切换时运行作业,则不要在 01:00-03:00 窗口内安排作业。

还请注意,您无法通过在第三列(日期)添加“1”来在任何月份的 1 号星期日运行作业。如果您写:

45 2 1 * 0 /scripts/backup.sh

那么该命令将在每个月 1 日运行,无论日期是哪天,在星期日运行,无论日期是哪天。与直觉相反的是,星期几列与其他显式条件是“或”而不是“与”。我学到了这一点,这很痛苦——让我在公众面前出丑。参见POSIX‘crontab’ 的规范要求第 0 天 = 星期日,并且不允许第 7 天作为同义词。

答案2

没错。该作业将于每周日凌晨 2:45 运行。

相关内容