anacron - 自动化命令
先决条件¶
- 运行 Rocky Linux 的计算机。
- 了解如何在命令行环境中使用您最喜欢的编辑器来更改配置文件(例如 vim)。
- 了解基本的 RPM 包管理。
假设¶
- 您拥有 bash、python 或其他脚本或编程工具的基本知识,并且想要自动运行脚本。
- 您以 root 用户身份连接,或者使用
su - root
切换到 root 用户。
介绍¶
anacron
定期运行命令,运行频率以天为单位。它适用于不 24x7 运行的计算机,例如笔记本电脑和台式机。假设您有一个计划在每天清晨运行的任务(例如备份脚本),使用 crontab
。当您入睡时,您的台式机或笔记本电脑已关闭。您的备份脚本将不会运行。但是,如果您使用 anacron
,您可以放心,下次您打开台式机或笔记本电脑时,备份脚本将运行。**
anacron
的出现并非要取代 crontab
,而是要补充 crontab
。它们之间的关系如下
anacron
配置文件¶
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
# Default 45 minutes delay for each specified job anacron random increase 0-45 minutes.
RANDOM_DELAY=45
# Specify the scope of work time, represented here 3:00 ~ 22:00
START_HOURS_RANGE=3-22
# period in days delay in minutes job-identifier command
# Boot every day to check whether the files in the directory /etc/cron.daily be executed in 5 minutes, if not executed today, then to the next
1 5 cron.daily nice run-parts /etc/cron.daily
# Every 7 days within 25 minutes if the file check /etc/cron.weekly directory is executed after boot, if not executed within a week, it will be executed next
7 25 cron.weekly nice run-parts /etc/cron.weekly
# Whether the files in the directory /etc/cron.monthly 45 minutes checking is performed after every start for a month
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
/etc/cron.hourly/ - 通过 journalctl -u crond.service
,您可以知道里面放置的文件实际上是由 crond
调用的,这意味着命令将在每小时的第一分钟之后运行。如下所示
shell > cat /etc/cron.d/0hourly
# Run the hourly jobs
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-20 23: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)
有关更多配置文件信息,浏览手册页
用户使用¶
要使某些文件在这些自动定义的时间内运行,您只需将脚本文件复制到相关目录并验证它是否具有执行权限 (chmod +x)。因此,您只需让系统在这些计划时间中的任何一个时间自动运行脚本,这简化了自动化任务。
让我们使用 cron.daily 来说明 /etc/anacrontab 的运行过程
anacron
读取/var/spool/anacron/cron.daily 文件,文件的内容显示上次运行的时间。- 与当前时间相比,如果两个时间之差超过 1 天,则 cron.daily 作业将运行。
- 此工作只能在 03:00-22:00 之间运行。
- 验证文件是否在引导后 5 分钟运行。第一个运行时,将在 0~45 分钟内随机延迟运行下一个。
- 使用 nice 参数指定默认优先级,使用 run-parts 参数运行 /etc/cron.daily/ 目录中的所有可执行文件。
相关命令¶
使用命令 anacron
,常用的选项是
选项 | 描述 |
---|---|
-f | 运行所有作业,忽略时间戳 |
-u | 将时间戳更新为当前时间,而不执行任何操作 |
-T | 测试配置文件 /etc/anacrontab 的有效性 |
有关更多帮助信息,浏览手册页
作者:田野
贡献者:史蒂文·斯宾塞,安娜·吉尔诺娃