湖州建设网站制作,企业网站建站系统哪个好用,wordpress 安装 404,重庆建设造价工程信息网站15.4.1 什么是 anacron
anacron 并不是用来取代 crontab 的#xff0c;anacron 存在的目的就在于我们上头提到的#xff0c;在处理非24 小时一直启动的 Linux 系统的 crontab 的执行#xff01; 以及因为某些原因导致的超过时间而没有被执行的调度工作。
其实 anacron 也是…15.4.1 什么是 anacron
anacron 并不是用来取代 crontab 的anacron 存在的目的就在于我们上头提到的在处理非24 小时一直启动的 Linux 系统的 crontab 的执行 以及因为某些原因导致的超过时间而没有被执行的调度工作。
其实 anacron 也是每个小时被 crond 执行一次然后 anacron 再去检测相关的调度任务有没有被执行如果有超过期限的工作在 就执行该调度任务执行完毕或无须执行任何调度时anacron 就停止了。
15.4.2 anacron 与 /etc/anacrontab
anacron 其实是一支程序并非一个服务这支程序在 CentOS 当中已经进入 crontab 的调度同时 anacron 会每个小时被主动执行一次。 基本上 anacron 的语法如下 在我们的 CentOS 中anacron 的进行其实是在每个小时都会被抓出来执行一次 但是为了担心 anacron 误判时间参数因此 /etc/cron.hourly/ 里面的 anacron 才会在文件名之前加个 00anacron让 anacron 最先进行就是为了让时间戳记先更新以避免 anacron 误判crontab 尚未进行任何工作的意思。
接下来看一下 anacron 的配置文件 /etc/anacrontab 的内容好了 我们拿 /etc/cron.daily/ 那一行的设置来说明好了。那四个字段的意义分别是
天数anacron 执行当下与时间戳记 /var/spool/anacron/ 内的时间纪录档 相差的天数若超过此天数就准备开始执行若没有超过此天数则不予执行后续的指令。
延迟时间若确定超过天数导致要执行调度工作了那么请延迟执行的时间因为担心立即启动会有其他资源冲突的问题吧
工作名称定义这个没啥意义就只是会在 /var/log/cron 里头记载该项任务的名称这样通常与后续的目录资源名称相同即可。
实际要进行的指令串通过 run-parts来处理的
根据上面的配置文件内容我们大概知道 anacron 的执行流程应该是这样的 以 cron.daily为例
1. 由 /etc/anacrontab 分析到 cron.daily 这项工作名称的天数为 1 天
2. 由 /var/spool/anacron/cron.daily 取出最近一次执行 anacron 的时间戳记
3. 由上个步骤与目前的时间比较若差异天数为 1 天以上 含 1 天就准备进行指令
4. 若准备进行指令根据 /etc/anacrontab 的设置将延迟 5 分钟 3 小时 看START_HOURS_RANGE 的设置
5. 延迟时间过后开始执行后续指令亦即“ run-parts /etc/cron.daily ”这串指令
6. 执行完毕后 anacron 程序结束。
最后总结一下crond与anacron的关系
1. crond 会主动去读取 /etc/crontab, /var/spool/cron/, /etc/cron.d/ 等配置文件并依据“分、时、日、月、周”的时间设置去各项工作调度
2. 根据 /etc/cron.d/0hourly 的设置主动去 /etc/cron.hourly/ 目录下执行所有在该目录下的可执行文件
3. 因为 /etc/cron.hourly/0anacron 这个指令档的缘故主动的每小时执行 anacron 并调用 /etc/anacrontab 的配置文件
4. 根据 /etc/anacrontab 的设置依据每天、每周、每月去分析 /etc/cron.daily/,/etc/cron.weekly/, /etc/cron.monthly/ 内的可执行文件以进行固定周期需要执行的指令。
也就是说如果你每个周日的需要执行的动作是放置于 /etc/crontab 的话那么该动作只要过期了就过期了并不会被抓回来重新执行。但如果是放置在 /etc/cron.weekly/ 目录下那么该工作就会定期几乎一定会在一周内执行一次如果你关机超过一周那么一开机后的数个小时内该工作就会主动的被执行。
15.5 重点回顾
系统可以通过 at 这个指令来调度单一工作的任务“at TIME”为指令下达的方法当 at进入调度后 系统执行该调度工作时会到下达时的目录进行任务
at 的执行必须要有 atd 服务的支持且 /etc/at.deny 为控制是否能够执行的使用者帐号
通过 atq, atrm 可以查询与删除 at 的工作调度
batch 与 at 相同不过 batch 可在 CPU 工作负载小于 0.8 时才进行后续的工作调度系统的循环例行性工作调度使用 crond 这个服务同时利用 crontab -e 及 /etc/crontab 进行调度的安排
crontab -e 设置项目分为六栏“分、时、日、月、周、指令”为其设置依据
/etc/crontab 设置分为七栏“分、时、日、月、周、执行者、指令”为其设置依据
anacron 配合 /etc/anacrontab 的设置可以唤醒停机期间系统未进行的 crontab 任务