参见英文答案 >
Why is my crontab not working,and how can I troubleshoot it?5个
在crontab中,我看到了几个答案,用户要求每隔5分钟运行一次:
在crontab中,我看到了几个答案,用户要求每隔5分钟运行一次:
*/5 * * * * command
或者每隔5分钟就有一个偏移:
10-59/5 * * * * command
我已经看到一些创造性的解决方案,人们每90分钟制作2行crontabs:
0 0-21/3 * * * whatever 30 1-22/3 * * * whatever
感谢下面的答案之一(感谢@khaled),这是3小时30分钟的另一个创意解决方案:
0 0-23/7 * * * whatever 30 3-23/7 * * * whatever
是否有每x分钟问题的通用解决方案?例如,我目前需要每3小时30分钟.
解决重复标记:链接的问题明显不同 – 有关如何设置和调试cron作业的一般建议.我指的是一个特定的问题,我们正在达到cron语法的极限.我正在寻找一种解决“每超过60分钟”问题的通用算法,这在链接问题中没有解决.
解决方法
你只需要自己做数学计算就可以得到所需的工作来实现你的计时.
0 0-23/7 * * * whatever 30 3-23/7 * * * whatever
从这两个例子可以得出一个简单的算法(当有30分钟的偏移时):
>添加两个条目:一个偏移0分钟,另一个偏移30分钟.
>指定小时范围宽度等于持续时间* 2.
>指定小时偏移量:一个以0开头,另一个以丢弃30分钟零件后的持续时间开始.
如果你想得更多,你可以为每75分钟的事情提出类似的解决方案.
编辑:
Cron不能用于所有类型的预定作业.例如,在每月的最后一天每月执行一次作业.你不能简单地用cron来做,因为月份的最后一天会从一个月变为另一个月.要解决此问题,您可以在月末(28-31)的可能值范围内运行cron作业,并在执行实际作业之前验证它是否真的是脚本中的最后一天.