Crontab和dayofweek

我正在尝试设置一个星期天每周运行一次的cron作业。 我想我应该使用“dayofweek”的位置,它设置为0,但我不确定这是否覆盖了“*”的一天的位置。

45 2 * * 0 /scripts/backup.sh 

它是否正确?

你是正确的 – 正如已经报道。

请注意,星期日02:45的工作不会在spring的星期天当钟表跳跃时运行(星期日01:45的工作将在秋天的星期天运行两次)时钟倒退)。 推论:如果时钟在冬季和夏季(标准时间和夏令时)之间变化时可能正在运行,则不要在01:00-03:00窗口中安排作业。

另外请注意,您不能在任何月份的星期天的第1天向第三天(天)添加“1”来运行任务。 如果你写:

 45 2 1 * 0 /scripts/backup.sh 

那么这个命令将会在每个月的第一天,无论在哪一天,在星期天都会运行。 与直觉相反,星期几列与其他显式条件进行或运算,而不是AND'd。 我了解到这一点 – 让我自己成为公众的傻瓜。 请参阅POSIX规范中的“crontab”,它要求第0天=星期天,并且不允许第7天作为同义词。

这是正确的。 这项工作将在每个星期天凌晨2:45运行。