如何设置Cron作业在准确的时间运行?


67

我有一份日常工作,每天执行一次。但是我想使其准确地在午夜或其他时间运行。


1
能否请您澄清一下?您是否在询问有关在特定时间(例如下午5:43)如何执行cron作业的信息?一个单一的,非重复的时间(明天凌晨3:27,然后不再重演);或者是其他东西?
BryanH 2011年

Answers:


126

您还可以为每个gr指定确切的值

0 2,10,12,14,16,18,20 * * *

它代表2h00、10h00、12h00等,直到20h00。

根据以上答案,我们得到:

逗号“,”表示“和”。如果您对以上一行感到困惑,请记住空格是字段分隔符,而不是逗号。

并且从(维基百科页面):

*    *    *    *    *  command to be executed
┬    ┬    ┬    ┬    ┬
│    │    │    │    │
│    │    │    │    │
│    │    │    │    └───── day of week (0 - 7) (0 or 7 are Sunday, or use names)
│    │    │    └────────── month (1 - 12)
│    │    └─────────────── day of month (1 - 31)
│    └──────────────────── hour (0 - 23)
└───────────────────────── min (0 - 59)

希望能帮助到你 :)

-

编辑:

  • 不要错过第一个0(零)和以下空格:它表示“分钟零”,您也可以将其设置为15(第15分钟)或* / 15之类的表达式(每分钟可被15整除,即0) ,15,30)

2
您忘了在第一行中添加一个额外的*吗?

我几乎可以肯定是这样的:)不是吗?:v
Bruno J. Araujo 2014年

2
@YumYumYum 0和下一个数字之间有空格,因此它表示分钟,下一个表示小时。
abhishek

啊! 我的意思是……(例如02:00作为开始时间,20:00结束):)我错过了什么还是只是空格?
Bruno J. Araujo

1
请记住,您还可以通过使用斜杠来使用步骤。因此,对于偶数小时,答案中的示例可以简化为0 2-20 / 2 * * *。 请注意,这对“每天一次”的OP问题无济于事,但是鉴于答案的高票,它可能会对其他依赖此答案的常规crontab语法问题有所帮助。而且crontab.guru确实可以解决cron语法问题。披露:我参与了该项目
HeyZiko '16


1

我的用例是我使用的是计量帐户。周一至周五的工作日(上午6点至下午6点)的数据传输受到限制。我正在使用带宽限制,但是不知何故,数据仍然会漏掉,每天大约1GB!

我强烈怀疑这是病态或胡须,需要进行大量搜索。我的下载机称为“下载”。以下是我的解决方案,使用上述方法,使用KVM启动和停止了下载VM:

# Stop download Mon-Fri, 6am
0 6 * * 1,2,3,4,5 root          virsh shutdown download
# Start download Mon-Fri, 6pm
0 18 * * 1,2,3,4,5 root         virsh start download

我认为这是正确的,希望对其他人也有帮助。


您也可以将日期简化为以下范围:0 6 * * 1-5。这是crontab.guru对这两个选项的说明:不重复列表= crontab.guru/#0_6_%2A_%2A_1,2,3,4,5范围= crontab.guru/#0_6_%2A_%2A_1-5
HeyZiko
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.