我一直在摆弄cron。如果您安排一个脚本每天运行,并且您的计算机在 acron 安排它时关闭,如果您在当天晚些时候打开计算机,它会运行吗?
4 回答
cron.daily 计划每天在特定时间运行一次。如果您的计算机当时处于关闭状态,它会错过它。
查看/etc/crontab以了解它计划运行的时间。在那里你会看到时间表设置..它遵循以下结构:
MIN HOUR DOM MON DOW CMD
你应该看到类似的东西......
02 4 * * * root run-parts /etc/cron.daily
这意味着在每个月每周的凌晨 4 点后 2 分钟运行 /etc/cron.daily 文件
在 Ubuntu 上,您通常已经anachron
安装了。如果上次运行作业之间的间隔大于一天,它将在您下次启动机器时运行您的日常作业。如果您的机器暂时关闭,它将不会在当天晚些时候运行作业。
从手册页:
Anacron 可用于定期执行命令,频率以天为单位。与 cron(8) 不同,它不假定机器连续运行。因此,它可以在不是一天 24 小时运行的机器上使用,以控制通常由 cron 控制的每日、每周和每月作业。
执行时,Anacron 从配置文件中读取作业列表,通常是 /etc/anacrontab(请参阅 anacrontab(5))。此文件包含 Anacron 控制的作业列表。每个作业条目指定以天为单位的时间段、以分钟为单位的延迟、唯一的作业标识符和 shell 命令。
对于每个作业,Anacron 检查该作业是否在过去 n 天内执行,其中 n 是为该作业指定的时间段。如果没有,Anacron 会在等待指定为延迟参数的分钟数后运行作业的 shell 命令。
快乐是对的。我可以补充一点,如果您需要每天运行脚本,但不确定您的计算机是否会在请求的时间打开,您可以将脚本放在文件夹/etc/cron.daily中,它将在启动时运行。
您也可以使用Anacron。
不幸的是没有。Cron 是一个守护进程,它每分钟检查一次配置并运行配置的命令。此外,您在特定于发行版的 cron.daily 中定义的 cronjobs 在特定时间执行,这通常在 /etc/crontab 中定义(读取 /etc/cron.daily 等中的所有配置)
如果您想确保您的作业每天执行一次,无论机器何时运行,我建议将其添加到您/etc/rc.local
的启动后运行命令。
编辑 似乎 Ubuntu 上的默认 cron,anacron,做得更好。阅读 Mithrandir 的回答