我使用 fedora20 及其默认的 cron。我有一个 cron 作业脚本,它使用 rtcwake 让服务器在上午 10:30 进入睡眠状态,并在中午 12:30 唤醒。如果我在上午 9:40 手动运行脚本,它也会在中午 12:30 唤醒。如果我在上午 9:40 手动运行脚本,它会在中午 12:30 醒来后运行上午 10:30 错过的 cron 任务并立即进入睡眠状态(这使其在下午 3:30 醒来)吗?
这似乎是我的服务器发生的情况,我想知道 cron 是否在唤醒后运行错过的作业。如果是这样,有什么办法可以改变这种行为吗?非常感谢。
答案1
Fedora 默认为慢性病,它结合了类似 anacron 的功能,即使在系统关闭时也可以定期运行作业。默认/etc/anacrontab
看起来像这样:
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
/etc/cron.[daily,weekly,monthly]
...这意味着默认情况下,即使计算机关闭,您放入这些目录之一 ( ) 的任何脚本也会运行。但是,/etc/crontab
或用户 crontab中的内容/etc/cron.d
不会以这种方式工作。如果现有的定期计划不适合您,请了解man anacrontab
如何添加新条目。
答案2
并非所有cron
守护进程都能处理非连续正常运行的情况。专门设计用于运行“错过”作业的守护进程是anacron
。