crontab 星期几语法
Posted
技术标签:
【中文标题】crontab 星期几语法【英文标题】:Crontab Day of the Week syntax 【发布时间】:2013-09-25 23:34:38 【问题描述】:在 crontab 中,星期几字段是否从 0 - 6
或 1 -7
运行?
我看到这方面的信息相互矛盾。***指出0-6
和我看到的其他网站是1-7
。
还有什么含义,或者错误地使用0
或7
?即 cron 还会运行吗?
【问题讨论】:
【参考方案1】:0
和7
都代表星期日,你可以使用你想要的,所以写0-6或1-7的结果是一样的。
另外,正如@Henrik 所建议的,可以用缩短的日期名称替换数字,例如MON
、THU
等:
0 - Sun Sunday
1 - Mon Monday
2 - Tue Tuesday
3 - Wed Wednesday
4 - Thu Thursday
5 - Fri Friday
6 - Sat Saturday
7 - Sun Sunday
在图形上,* * * * * command to be executed
代表:
minute | hour | day of month | month | day of week | |
---|---|---|---|---|---|
(0-59) | (0-23) | (1-31) | (1-12) | (1-7) | |
* | * | * | * | * | command to be executed |
或者使用旧样式:
┌────────── minute (0 - 59)
│ ┌──────── hour (0 - 23)
│ │ ┌────── day of month (1 - 31)
│ │ │ ┌──── month (1 - 12)
│ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
│ │ │ │ │ 1 - 7 => Monday - Sunday)
↓ ↓ ↓ ↓ ↓
* * * * * command to be executed
最后,如果要指定天数,可以用逗号分隔天数,例如SUN,MON,THU
将只在星期日执行命令,星期一在星期四执行。
您可以在Wikipedia's article about Cron 中阅读更多详细信息,并使用crontab.guru 在线检查cron 表达式。
【讨论】:
好吧,我没有意识到周日可能是 0 或 7。谢谢 请注意,您不能这样做:Sat-Sun
,只有6-7
或Sat,Sun
你能确认这是不区分大小写的吗?您在回复中在SUN
、Sun
、Sunday
之间切换了几次
@MichaelChirico 哦,好点。检查Wikipedia's article about Cron 我读到月份和工作日的缩写不区分大小写。
@pkowalczyk 即使 'man 5 crontab' 证实了您的说法,命名的星期几列表在 cronie-1.5.2-4 (CentOS 8) 提供的 crond 中工作正常【参考方案2】:
:-) Sunday | 0 -> Sun
|
Monday | 1 -> Mon
Tuesday | 2 -> Tue
Wednesday | 3 -> Wed
Thursday | 4 -> Thu
Friday | 5 -> Fri
Saturday | 6 -> Sat
|
:-) Sunday | 7 -> Sun
正如您在上面看到的,并且如前所述,数字0
和7
都分配给星期日。还列出了星期几的英文缩写,也可以在crontab中使用。
数字或缩写使用示例
15 09 * * 5,6,0 command
15 09 * * 5,6,7 command
15 09 * * 5-7 command
15 09 * * Fri,Sat,Sun command
四个例子都是一样的,每周五、周六、周日的9点15点执行一个命令。
详细说明
有两个数字 0
和 7
代表星期日对于编写以 0
开头或以 7
结尾的工作日范围很有用。因此,您可以编写范围以星期日开始或以星期日结束,例如0-2
或5-7
(范围必须以较小的数字开头,并且必须以较高的数字结束)。缩写不能用于定义工作日范围。
【讨论】:
为清楚起见,“缩写不能用于定义工作日范围。”这里的陈述似乎是一种说法,即不能用连字符-减号分隔缩写,只能用逗号分隔。换句话说,Fri,Sat,Sun
不能缩写为 Fri-Sun
。【参考方案3】:
您还可以使用诸如 Mon
表示星期一、Tue
表示星期二等日期名称。这样更人性化。
【讨论】:
这不适用于某些发行版;使用 Ubuntu 14.04.3 LTS 进行测试,我得到了 "/tmp/crontab.Nuq9GE/crontab":24: bad day-of-week" @Nikita 检查拼写错误或多余的空格。我在 Ubuntu 14.04.3 上的 crontab 中有一个“Mon-Fri”和一个“Thu”,两者都工作得很好。我怀疑如果任何字符之间有空格,你最终会出错。以上是关于crontab 星期几语法的主要内容,如果未能解决你的问题,请参考以下文章