使用crontab进行作业调度,计算机在那段时间内closures会发生什么?

我使用crontab安排了一些任务。

如果我的电脑关机或在cron计划执行某些操作时closures,会发生什么情况?

每台计算机启动后是否错过了cron作业,或者被忽略的当天错过作业? 如果错过的作业不能恢复,有没有办法configurationcron,以便在计算机重新启动后运行错过的任务?

当您的计算机closures(或者cron守护进程不运行)时,cron作业将不会启动。

如果在计算机closures的时候,您有工作要做,那么请使用anacron。 默认安装,请参阅“man anacron”,“man anacrontab”或文件/ etc / anacrontab获取更多信息。

Ubuntu在默认情况下使用anacron作为crontab条目:

/etc/cron.daily /etc/cron.weekly /etc/cron.monthly 

剩下的crontabs由主cron守护进程处理,具体为:

 /etc/crontab /etc/cron.d /var/spool/cron 

笔记

Anacron本身并不作为守护进程运行,而是依靠系统启动脚本和cron本身来运行。

在我看的Ubuntu 8.04盒子上,/etc/init.d/anacron是在启动时运行的,并且每天早晨在07:30再由cron运行。

/usr/share/doc/anacron/README.gz中的自述文件比manapages中包含的信息略多一点。

例子

对于简单的“每日”,“每周”,“每月”作业,请在上面的/etc/cron.{daily|weeklymonthly}目录之一中放置脚本的副本或符号链接。 Anacron将负责每天/每周/每月的运行,如果您的计算机在“每周”脚本正常运行的那一天closures,它将在下一次计算机运行时运行它们。

再例如,假设你有一个脚本:/usr/local/sbin/maint.sh

而你希望每三天运行一次,/ etc / crontab中的标准input如下所示:

 # mh dom mon dow user command 0 0 */3 * * root /usr/local/sbin/maint.sh 

如果您的计算机在当月3日的00:00时间不工作,那么这个工作将不会运行到第6天。

为了让计算机在第四天运行,并在第三天“运行”,你可以在/ etc / anacrontab中使用它(不要忘记从/ etc / crontab中删除这行):

 # period delay job-identifier command 3 5 maint-job /usr/local/sbin/maint.sh 

上面的“5”的“延迟”意味着ant在运行这个工作之前等待5分钟。 这个想法是为了防止anacron在启动时立即开火。

这取决于你使用哪个cron调度器。 基本的香草cron守护进程不会运行由于系统停机而错过的任务。 不过,还有其他专门为这种情况devise的cron调度程序,它将为您执行此操作。 两个最常见的例子是anacron和fcron 。

计算机closures时计划的任务在计算机重新启动后将不会运行

如果在cron作业正在运行时closures,则系统closures,cron作业停止(或不运行)。

你可以检查的一个select是anacron。

真的取决于你正在运行的cron deamon。 Vixie-cron只会跳过错过的cronjobs。 fcron会尽快运行错过的cron。 IIRC它也基于vixie-cron,所以如果这就是你正在寻找的,你可能想看看fcron。