有时我需要以更复杂的方式运行Cron能够提供的预定作业。 说,安排一个工作每23或65分钟运行一次。
在后一种情况下,可以通过添加多个Cron条目来运行同一行。 在第一种情况下,添加的行数变得太多了。
三个明显的解
但在某些情况下,这些都是不方便的。
是否有更聪明的Cron替代品,至less可用于POSIX系统,能够使用任意时间表?
要每23分钟运行一次工作,以下操作将不起作用:
* / 23 * * * * / some / command
因为这将在00:00,00:23运行,然后23分钟后再次在00:46,然后再次在14分钟后的01:00,而不是每隔23分钟。
其原因在于, 每当分钟数(从“午夜”起)是23的倍数时 , / in */23 不是 “数字”除以“并且不匹配 ” 。
*/23是一个“增量” 。 这告诉cron匹配分钟数0 1 2 3 4 5 6 7 8 9 10 11 ... 59 (其中*是简写)即分钟0,23 0, 23 & 46中的每23个项目 ( /23 )。
该增量行为还允许您移动偏移,即通过在1而不是0开始范围:
1-59/23 * * * * /some/command
这项工作现在每小时运行一次,过去一分钟,过去二十 四分钟,过去一小时再过四十七分钟。
我同意你的评价,对于奇数时间表cron语法是不够的。
Cron是一个非常简单的时间驱动调度器。
我假设你可能想每23分钟运行一次你的工作,因为这是你的批处理作业的运行时间的总和,并增加了一些安全边界?
你的select是简化你的调度需求,使他们可以与cron一起工作,即每30分钟运行一次你的工作,或者几乎完全放弃时间驱动调度的概念,并调查一个事件驱动的调度器。
使用事件驱动的计划程序,一个批次的完成是自动启动下一个批次的触发器,可以select没有延迟,也不会冒用基于时间的计划程序的风险,即在上一批完成之前批量启动。
维基百科提供了Job Scheduler软件或工作负载自动化的完整列表,因为许多供应商喜欢调用他们的产品。
运行命令
crontab -e
然后,input
2
如果它要求您使用默认编辑器然后,input
*/23 * * * * <command here>
每23分钟运行一次工作。 用任何你想要的号码replace23。