对cron和anacron之间的关系感到困惑


19

我一直在徒劳地搜寻关于cron和anacron如何协同工作的一般解释。在这一点上,手册页对我来说太深了。

我很困惑,因为我向crontab添加了任务,并且可以正常工作,但是当我从crontab中删除任务时,它们仍然在anacron下运行。我在/etc/cron.daily中看到了任务,但是我不确定它们是如何到达那里的。cron始终在我的系统上运行,而不是anacron。实际上,我看到anacron由cron启动!

基本上,我想在用户级别上介绍如何添加和删除任务,因为告诉您编辑crontab的简单易用的答案尚不完整。链接到教程就可以了。

Answers:


19

两者cronanacron是守护程序,它可安排周期性任务在某一个时间点由用户定义的执行。

cron和之间的主要区别在于,anacron前者假定系统正在连续运行。如果系统关闭并且在此期间安排了作业,则该作业将永远不会执行。

另一方面,它anacron是“过时的”,是为未运行24x7的系统而设计的。为了使其工作,请anacron使用带有时间戳的文件来查找上次执行命令的时间。它也/etc/anacrontab像维护文件一样维护文件cron。此外,cron.daily每天都要运行蟒蛇。因此,anacron一天只能运行一次作业,但cron每分钟可以运行一次。

来自man anacrontab

执行后,Anacron将从配置文件(通常为/ etc / anacrontab)中读取作业列表(请参阅anacrontab(5))。该文件包含Anacron控制的作业列表。每个作业条目以天为单位指定时间段,以分钟为单位指定延迟时间,唯一的作业标识符和shell命令。

对于每个作业,Anacron都会检查该作业是否在最近n天内执行过,其中n是为该作业指定的时间段。如果不是,则在等待指定为delay参数的分钟数后,Anacron运行作业的shell命令。

命令退出后,Anacron将日期记录在该作业的特殊时间戳文件中,因此它可以知道何时再次执行该日期。仅将日期用于时间计算。不使用小时。

这意味着,如果计划将任务每天运行一次,并且在此期间计算机已关闭,则在运行anacron时,它可以看到该任务的最后一次运行时间超过24小时,并且可以正确执行任务。

例如,如果您在中指定以下内容/etc/anacrontab

7       15      test.daily      /bin/sh /home/username/script.sh

并且在script.sh应该执行作业的当天(如果系统未运行)anacronscript.sh在系统重新启动后的15分钟内执行。

很少参考:


谢谢,“数字海洋”教程特别出色,而且经常如此。不确定我是如何错过它的,所以感谢您的链接。
有机大理石

谢谢。通过“ cron.daily每天运行蟒蛇”,您是否代替了“ cron.daily每天运行蟒蛇”?
蒂姆(Tim)

谢谢你 -我已经anacron从所有VPS上移除了,因为它们始终处于开机状态。(不知道它是如何到达那里的,我没有听说过。)我的crontab输入(每天,每周,...)现在都在预期的时间运行。
Adambean '19
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.