我有一个命令,我想要定期运行,即以固定的时间间隔(例如每天一次)运行。
据我所知,通常的做法是使用cron。 这就要求我在特定的时间安排我的任务(比如每天午夜)。 但是,在我的情况下,目标机器没有连续运行,所以它可能不会在每天的预定时间运行。
因此,我正在寻找某种后台服务,它使用自上次命令调用以来经过的时间,而不是决定是否执行命令的具体时间。
例如,假设命令的最后一次执行是在两天前的中午,并且机器被closures了。 现在机器再次启动。 守护进程注意到自上次调用以来已经过去了一天,并且运行该命令(不pipe当前时间是什么)。 如果机器继续运行至less24小时,那么命令将在24小时后再次执行。
显然我可以更频繁地攻击cron所调用的某些东西,并且自己执行必要的检查,但是我想知道是否存在针对这种问题的现成解决scheme。
你可以在Linux系统上使用anacron 。
使用以下内容创build文件/etc/anacrontab :
# period delay job-identifier command 7 2 cron.weekly mycommand
如果mycommand在最近7天内没有运行,则等待2分钟,然后运行命令。
Anacron作业由crond运行,对于在笔记本电脑等并不总是开机的计算机上执行定期作业非常有用。 只有超级用户才能安排一个粒度为一天的繁忙作业(对于cron作业而言为一分钟)。
指定的anacron作业的最后执行将保存在/var/spool/anacron/job_id 。
使用anacron,正是你想要的,它的意思是像cron计算机不是24 x 7的
链接: http : //anacron.sourceforge.net/