我使用crontab安排了一些任务。
如果在计划cron执行某项操作的时间内关闭计算机或关闭了计算机,将会发生什么情况?
是否在计算机打开后运行每个遗漏的Cron作业,还是忽略了那天的遗漏作业?如果丢失的作业无法恢复,是否可以通过任何方式配置cron以便在计算机重新打开后运行cron?
我使用crontab安排了一些任务。
如果在计划cron执行某项操作的时间内关闭计算机或关闭了计算机,将会发生什么情况?
是否在计算机打开后运行每个遗漏的Cron作业,还是忽略了那天的遗漏作业?如果丢失的作业无法恢复,是否可以通过任何方式配置cron以便在计算机重新打开后运行cron?
Answers:
当您的计算机关闭时(否则cron守护程序未运行),cron作业将不会启动。
如果您要在计算机关闭后的那段时间之后运行某些作业,请使用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中的README信息多于手册页中的信息。
例子
对于简单的“每日”,“每周”,“每月”作业,请在上面的/etc/cron.{daily|weekly|monthly}目录之一中将脚本的副本或符号链接放置到脚本中。Anacron会每天/每周/每月运行一次,如果您的计算机在当天关闭,则“每周”脚本通常会运行,那么它将在下次计算机开启时运行它们。
再举一个例子,假设您在这里有一个脚本:/usr/local/sbin/maint.sh
而且您希望每三天运行一次,/ etc / crontab中的标准条目如下所示:
# m h dom mon dow user command
0 0 */3 * * root /usr/local/sbin/maint.sh
如果您的计算机在当月3号的00:00不在开机,则该作业要等到6号才能运行。
要在计算机关闭时让作业在第4位运行,而在第3位“错过”运行,则可以在/ etc / anacrontab中使用它(不要忘记从/ etc / crontab中删除该行):
# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh
上面的“ 5”的“延迟”表示anacron将等待5分钟才能运行此作业。这个想法是为了防止anacron在启动时立即发射东西。