我使用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。