类型:Linux发行版
简介:与RHEL完全兼容,具有企业级稳定性及开源等优势。
Anacron是Rocky Linux的自动化命令执行工具,能够帮助用户在未全天候开启的计算机上定期执行命令,适合工作方式具有非连续性的计算机(如笔记本电脑和台式计算机)。本教程主要介绍Anacron概念及使用方法。
一、先决条件
在开始使用 Anacron 之前,请确保具备以下条件:
1、一台运行 Rocky Linux 的计算机。
2、了解如何使用最喜欢的编辑器(例如 “vim”)来修改命令行环境中的配置文件。
3、基础的 RPM 软件包管理知识。
4、掌握 、Python 或其他脚本/编程工具的使用,想要运行自动化脚本。
5、已以 root 用户身份登录,或使用 “su” 切换到 root 用户。
二、Anacron介绍
Anacron 定期运行命令,运行频率以天为单位,非常适合不全天候工作的计算机。例如每天早上需要通过 “crontab” 执行一个备份脚本,但台式机或笔记本电脑在睡觉时是关闭的,那么在下次开机时,Anacron 将确保该备份脚本能够自动执行。可以说,Anacron 并不是为了取代 crontab,而是对其功能的有力补充。两者关系如下图:
三、配置文件
shell > rpm -ql cronie-anacron /etc/anacrontab /etc/cron.hourly/0anacron /usr/lib/.build-id /usr/lib/.build-id/0e /usr/lib/.build-id/0e/6b094fa55505597cb69dc5a6b7f5f30b04d40f /usr/sbin/anacron /usr/share/man/man5/anacrontab.5.gz /usr/share/man/man8/anacron.8.gz /var/spool/anacron /var/spool/anacron/cron.daily /var/spool/anacron/cron.monthly /var/spool/anacron/cron.weekly
首先检查默认配置文件:
shell > cat /etc/anacrontab # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 每个指定作业的默认延迟为45分钟,随机增加0-45分钟。 RANDOM_DELAY=45 # 指定工作时间范围 比如如下示例代表 3:00~22:00 START_HOURS_RANGE=3-22 # 作业标识符命令的延迟时间(以天为单位) # 每天启动来检查目录 /etc/cron.daily 文件在5分钟内被执行, 若今日没有执行, 则推迟到下一次执行 1 5 cron.daily nice run-parts /etc/cron.daily # 启动后检查 /etc/cron.weekly 目录,每7天在25分钟内执行一次,若一周内未执行,则将在下一次执行 7 25 cron.weekly nice run-parts /etc/cron.weekly # 启动后检查 /etc/cron.monthly 目录中的文件, 每月45分钟内执行一次 @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
/etc/cron.hourly/ 通过 journalctl -u crond.service,,可以知道放在此文件夹内的文件实际上是被 crond.server 服务调用的。 因此这些命令将在每小时第一分钟后执行。 例如:
shell > cat /etc/cron.d/0hourly # 每小时执行任务 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly
shell > journalctl -u crond.service - Logs begin at Wed 2021-10-20 19:27:39 CST, end at Wed 2021-10-2023:32:42 CST. October 20 19:27:42 li systemd[1]: Started Command Scheduler. October 20 19:27:42 li crond[733]: (CRON) STARTUP (1.5.2) October 20 19:27:42 li crond[733]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 76% if used.) October 20 19:27:42 li crond[733]: (CRON) INFO (running with inotify support) October 20 20:01:01 li CROND[1897]: (root) CMD (run-parts /etc/cron.hourly) October 20 21:01:01 li CROND[1922]: (root) CMD (run-parts /etc/cron.hourly) October 20 22:01:01 li CROND[1947]: (root) CMD (run-parts /etc/cron.hourly) October 20 23:01:01 li CROND[2037]: (root) CMD (run-parts /etc/cron.hourly) October 20 19:27:42 li systemd[1]: Started Command Scheduler. October 20 19:27:42 li crond[733]: (CRON) STARTUP (1.5.2) October 20 19:27:42 li crond[733]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 76% if used.) October 20 19:27:42 li crond[733]: (CRON) INFO (running with inotify support) October 20 20:01:01 li CROND[1897]: (root) CMD (run-parts /etc/cron.hourly) October 20 21:01:01 li CROND[1922]: (root) CMD (run-parts /etc/cron.hourly) October 20 22:01:01 li CROND[1947]: (root) CMD (run-parts /etc/cron.hourly) October 20 23:01:01 li CROND[2037]: (root) CMD (run-parts /etc/cron.hourly)
四、用户使用
要使某些文件在指定的时间内运行,需要将脚本文件复制到相应的目录,并确保它们具有执行权限(使用 “chmod +x” 命令)。这让系统能够在设定的时间范围内自动运行脚本,从而简化了计划任务的运行。
让我们使用 cron.daily 文件来说明 /etc/anacrontab的执行过程:
1、anacron 读取 /var/spool/anacron/cron.daily 文件, 对应文件内容显示最后一次执行时间.
2、与当前时间相比,如果二者相差达到1天,那么corn.daily将被执行。
3、此任务只能在 03:00-22:00进行。
4、检查一个文件是否在系统启动后5分钟内执行。 当第一个文件被执行后,将会随机延迟0~45分钟来执行第二个。
5、使用nice参数指定默认优先级,并使用run-parts参数运行/etc/cron.daily/目录中的所有可执行文件。
五、相关命令
以下是一些常用的 Anacron 命令及其参数说明:
参数 | 说明 |
---|---|
-f | 执行所有作业,忽略时间戳 |
-u | 将时间戳更新到当前时间,而不执行任何操作 |
-T | 测试配置文件/etc/anacrontab 是否有效 |