我一直在谷歌上徒劳地搜索 cron 和 anacron 如何协同工作的一般解释。在这一点上,手册页对我来说有点太深入了。
我很困惑,因为我向 crontab 添加了任务,这有效,但是当我从 crontab 中删除它们时,它们仍然在 anacron 下运行。我在 /etc/cron.daily 中看到了任务,但我不确定它们是如何到达那里的。cron 总是在我的系统上运行,但不是 anacron。其实我看到 anacron 是由 cron 启动的!
基本上我想要一个关于如何添加和删除任务的用户级介绍,因为告诉你编辑 crontab 的易于搜索的答案并不完整。一个教程的链接就可以了。
Ron*_*Ron 27
两者cron
并anacron
是守护程序,它可安排周期性任务在某一个时间点由用户定义的执行。
cron
和之间的主要区别在于anacron
前者假设系统持续运行。如果您的系统关闭并且您在此期间安排了一项作业,则该作业永远不会执行。
另一方面anacron
是“不合时宜的”,专为不是 24x7 全天候运行的系统而设计。为了使其工作,anacron
使用时间戳文件来找出最后一次执行其命令的时间。它也/etc/anacrontab
像cron
这样维护一个文件。此外,cron.daily
每天运行 anacron。因此,anacron
每天只能运行一次作业,但cron
可以每分钟运行一次。
来自man anacrontab
:
执行时,Anacron 从配置文件中读取作业列表,通常是 /etc/anacrontab(请参阅 anacrontab(5))。此文件包含 Anacron 控制的作业列表。每个作业条目指定一个以天为单位的时间段、一个以分钟为单位的延迟、一个唯一的作业标识符和一个 shell 命令。
对于每个作业,Anacron 会检查该作业是否在过去 n 天内执行过,其中 n 是为该作业指定的时间段。如果没有,Anacron 在等待指定为延迟参数的分钟数后运行作业的 shell 命令。
命令退出后,Anacron 将日期记录在该作业的特殊时间戳文件中,因此它可以知道何时再次执行它。只有日期用于时间计算。不使用小时。
这意味着,如果一个任务被安排为每天运行并且在此期间计算机处于关闭状态,那么当 anacron 运行时,它可以看到该任务最后一次运行超过 24 小时并正确执行该任务。
例如,如果您在 中指定以下内容/etc/anacrontab
:
7 15 test.daily /bin/sh /home/username/script.sh
Run Code Online (Sandbox Code Playgroud)
并且在script.sh
作业应该执行的那天,如果系统没有运行,anacron
将script.sh
在系统恢复后的15分钟执行。
很少参考:
归档时间: |
|
查看次数: |
17642 次 |
最近记录: |