Cron执行问题

假设我用anacron或crontab -e设置了一个cron作业。

现在,如果我的机器在cron应该执行预定作业的时刻关闭怎么办?

我的机器开机后会立即执行作业吗? 或者根本不执行?

如果您使用的是cron ,那么如果当时计算机处于关闭状态,则不会执行该作业。

如果您正在使用anacron进行该作业,则下次打开计算机时将执行该作业。 执行时间需要一些探索。 请注意,来自anacron的最小时间单位是day,因此您只能设置一个频率为1天或更长时间的anacron作业。

这是/etc/anacrontab的示例条目:

 1 5 cron.daily run-parts --report /etc/cron.daily 
  • 初始1表示此作业将每天运行(频率= 1天)

  • 5表示在运行此作业之前计算机启动后将延迟5分钟

  • cron.dailyanacron的作业标识符,用于标识假脱机目录/var/spool/anacron/中的特定作业

  • run-parts --report /etc/cron.daily是要执行的命令。

因此,如果您的计算机在运行作业时已关闭,则anacron将检查/var/spool/anacron/cron.daily上次运行的时间戳。 如果它在前一天或更早时间执行,那么anacron将运行该作业并相应地更新时间戳。

Ubuntu使用anacron进行每日,每周和每月的工作。 来自/etc/crontab

 05 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 

正如您在每天早上6:05看到的那样,每日工作将从/etc/cron.daily运行。 如果存在anacron ,它将解析/etc/anacrontab (并运行run-parts来执行/etc/cron.daily下的文件),否则cron将使用run-parts直接执行/etc/cron.daily下的所有文件。

如果此时计算机处于关闭状态,则anacron将在下次按照/etc/anacrontab文件中的指示将其打开后运行该作业。

当cron作业通过的时间系统关闭时,cron永远不会开始工作。 工作可以在几分钟内完成。

当系统关闭时,anacron会启动一项工作。 但是anacron只能设置为几天。 没什么小的。

anacron用于桌面,因此Ubuntu具有此活动(桌面预计将被关闭)。 cron主要用于服务器(那些机器往往是永久性的)。

crontab与任何其他调度程序或任何在计算机关闭时无法工作的东西一样。

cron是一个unix实用程序,它允许任务由cron守护程序定期在后台自动运行。 这些任务通常被称为unix中的cron作业。 Crontab(CRON表)是一个文件,其中包含要在指定时间运行的cron条目的计划。

所以运行cron运行命令

  crontab -e 

将在默认编辑器中打开cron文件。

添加计划命令的条目

 * * * * * command to be executed - - - - - | | | | | | | | | +----- day of week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) 

所以现在针对你的问题,假设我有这个cron条目:

 30 23 31 5 * apt-get install foo 

我想在2015年5月31日23:30安装foo软件包

那么如果计算机此时关闭会发生什么

简单来说,cron没有被执行,根本就不会被执行

现在假设我有这个cron条目:

 30 23 * 5 * apt-get install foo 

我想在2015年5月20日23:30的任何一天安装foo软件包

那么如果计算机此时关闭会发生什么

简单来说,cron没有被执行,但是你仍然有机会在今年的第5个月的任何一天23:30运行。

作为结论

如果PC在必须运行时关闭,cron将不会返回完成,而是在crontab条目中的特定时间执行。