seg.server.fault Asked: 2009-08-11 08:22:31 +0800 CST2009-08-11 08:22:31 +0800 CST 2009-08-11 08:22:31 +0800 CST 使用crontab进行作业调度,在此期间计算机关闭会发生什么? 772 我使用 crontab 安排一些任务。 如果我的计算机在计划 cron 执行某项操作期间关闭或关闭,会发生什么情况? 是否每个错过的 cron 作业在计算机打开后运行,或者那天错过的作业是否被忽略?如果错过的作业没有恢复,有没有办法配置 cron 以便在重新打开计算机后运行错过的任务? linux ubuntu cron 5 个回答 Voted Best Answer jeff 2009-08-11T08:26:06+08:002009-08-11T08:26:06+08:00 当您的计算机关闭(或 cron 守护程序未运行)时,将不会启动 cron 作业。 如果您有想要在计算机关闭后运行的作业,请使用 anacron。默认安装,请参阅“man anacron”、“man anacrontab”或文件 /etc/anacrontab 了解更多信息。 Ubuntu 默认使用 anacron 作为 crontab 条目: /etc/cron.daily /etc/cron.weekly /etc/cron.monthly 将剩余的 crontab 留给主 cron 守护进程处理,具体来说: /etc/crontab /etc/cron.d /var/spool/cron 笔记 Anacron 本身并不作为守护进程运行,而是依赖于系统启动脚本和 cron 本身来运行。 在我正在查看的 Ubuntu 8.04 机器上,/etc/init.d/anacron 在启动时运行,并且每天早上 7: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 日之前运行。 要在计算机关闭并在 3 日“错过”运行时让作业在 4 日运行,您可以在 /etc/anacrontab 中使用它(不要忘记从 /etc/crontab 中删除该行): # period delay job-identifier command 3 5 maint-job /usr/local/sbin/maint.sh 上面“5”的“延迟”表示anacron 会等待5 分钟再运行这个作业。这个想法是为了防止 anacron 在启动时立即启动。 Tyler McHenry 2009-08-11T08:27:49+08:002009-08-11T08:27:49+08:00 这取决于您使用的 cron 调度程序。基本的、普通的 cron 守护程序不会运行由于系统停机而错过的任务。但是,还有其他专门为这种情况设计的 cron 调度程序可以为您执行此操作。最常见的两个例子是anacron和fcron。 Alan H 2009-08-11T08:26:39+08:002009-08-11T08:26:39+08:00 计算机关闭时计划的任务将不会在计算机重新启动时运行 KPWINC 2009-08-11T08:27:25+08:002009-08-11T08:27:25+08:00 如果您在 cron 作业运行时关闭,系统会关闭并且 cron 作业会停止(或不运行)。 您可以检查的另一种选择是 anacron。 gregf 2009-08-11T08:35:34+08:002009-08-11T08:35:34+08:00 真的取决于你正在运行的 cron 守护进程。Vixie-cron 只会跳过错过的 cronjobs。fcron将尽快运行错过的 crons。IIRC 它也是基于 vixie-cron 的,所以如果这是您正在寻找的内容,您可能需要查看 fcron。
当您的计算机关闭(或 cron 守护程序未运行)时,将不会启动 cron 作业。
如果您有想要在计算机关闭后运行的作业,请使用 anacron。默认安装,请参阅“man anacron”、“man anacrontab”或文件 /etc/anacrontab 了解更多信息。
Ubuntu 默认使用 anacron 作为 crontab 条目:
将剩余的 crontab 留给主 cron 守护进程处理,具体来说:
笔记
Anacron 本身并不作为守护进程运行,而是依赖于系统启动脚本和 cron 本身来运行。
在我正在查看的 Ubuntu 8.04 机器上,/etc/init.d/anacron 在启动时运行,并且每天早上 7:30 由 cron 再次运行。
/usr/share/doc/anacron/README.gz 中的 README 比手册页中包含的信息略多一些。
例子
对于简单的“每日”、“每周”、“每月”作业,请将脚本的副本或符号链接放在上面的 /etc/cron.{daily|weekly|monthly} 目录之一中。Anacron 将负责每天/每周/每月运行它,如果您的计算机在“每周”脚本正常运行的那一天关闭,它将在下次计算机打开时运行它们。
作为另一个示例,假设您在此处有一个脚本:/usr/local/sbin/maint.sh
如果您希望每三天运行一次,/etc/crontab 中的标准条目将如下所示:
如果您的计算机在该月 3 日的 00:00 未打开,则作业将在 6 日之前运行。
要在计算机关闭并在 3 日“错过”运行时让作业在 4 日运行,您可以在 /etc/anacrontab 中使用它(不要忘记从 /etc/crontab 中删除该行):
上面“5”的“延迟”表示anacron 会等待5 分钟再运行这个作业。这个想法是为了防止 anacron 在启动时立即启动。
这取决于您使用的 cron 调度程序。基本的、普通的 cron 守护程序不会运行由于系统停机而错过的任务。但是,还有其他专门为这种情况设计的 cron 调度程序可以为您执行此操作。最常见的两个例子是anacron和fcron。
计算机关闭时计划的任务将不会在计算机重新启动时运行
如果您在 cron 作业运行时关闭,系统会关闭并且 cron 作业会停止(或不运行)。
您可以检查的另一种选择是 anacron。
真的取决于你正在运行的 cron 守护进程。Vixie-cron 只会跳过错过的 cronjobs。fcron将尽快运行错过的 crons。IIRC 它也是基于 vixie-cron 的,所以如果这是您正在寻找的内容,您可能需要查看 fcron。