转移cron工作

有没有办法让cron作业每隔一小时一分钟运行? 例如, 12点,13点01分,14点02分,15点03分等无限期。 当它在12小时再次得到时,它应该在12:24执行工作,在下一个13:25执行。

试试at命令。

at +61m < commands.list 

commands.list:doupdate.sh at + 61m <commands.list

当然,你想使用你的文件的完整path。 每次运行时,将在未来61分钟设置下一个工作。

你可以运行“atq”来查看当前排队的内容。

看看大多数发行版可用的fcron ,更适合这种任务。

克朗将成为这个错误的工具。 cron的问题在于它不保持作业执行之间的状态。 这个臭名昭着的不知道一个工作是否已经成功运行,如果一个工作在下一次执行之前还在运行,等等。如果你想要这样的时机,你不应该依靠cron。

更好的select是调查您正在使用的语言提供的任务计划工具。 您基本上需要一个知道上一次任务运行状态的进程,特别是上一次成功执行的时间。 是的,这将导致在后台运行一个额外的守护进程,但这可能会更容易维护一些奇怪的方式来在cron中实现相同的东西。

克伦不会完全解决你的问题在这里; 你将不得不保持一些外部状态来跟踪你上一次工作的时间。

一种方法是像@cjc所build议的那样 – 运行一个额外的守护进程来处理调度本身。

另一种方法是将你的工作logging下来, 而且每次克朗都会开火,如果最后一次跑得太近,就会拒绝开始。 这可能就像在每次成功执行结束时触摸一个名为“lastrun”的文件一样简单,然后在下次执行开始时检查该文件的时间戳。 然后你可以设置cronjob每隔几分钟就开始一次; 在大多数情况下,它会注意到时差太小而立即退出。