服务配置
要获取 anacron 服务及其守护程序和相关控制文件,请安装 anacron 包:
# yum install cronie-anacron.x86_64
anacron 识别的事件在 /etc/anacrontab 文件中定义。
默认文件如下所示:
# cat /etc/anacrontab SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # Events are defined below 1 65 cron.daily run-parts /etc/cron.daily 7 70 cron.weekly run-parts /etc/cron.weekly 30 75 cron.monthly run-parts /etc/cron.monthly
语法为 VAR=VALUE 的行将值分配给传递给事件发生时运行的脚本和应用程序的 shell 环境。
每个 anacron 守护进程都没有硬连线事件。
相反,事件是在 /etc/anacrontab 文件中明确定义的。
默认情况下,事件每 1. 7 和 30 天定义一次。
事件定义的格式是:
[days] [delay] [job_id] [command] [[arg] ...]
其中:
days :定义 [command] 应运行的频率,以天为单位。
delay :在事件日调用 [command] 之前的分钟数。
job_id :标识日志文件中的 anacron 作业,用于命名在 /var/spool/anacron 中创建的时间戳文件
如何检查 anacron 是否正在运行
请注意,status 命令的非标准行为不能用于确定自上次系统启动以来 anacron 是否已运行。
相反,使用 /var/spool/anacron 目录中文件的时间戳。
这些文件在它们相应的事件发生时被触摸:
# ls -lrt /var/spool/anacron total 12 -rw-------. 1 root root 9 Jan 27 03:12 cron.monthly -rw-------. 1 root root 9 Aug 18 03:10 cron.weekly -rw-------. 1 root root 9 Aug 18 04:09 cron.daily
以上输出表示最后一次 anacron 月度事件发生在 7 月 27 日 03:12.
Cron 与 Anacron 对比
与 cron 服务类似,anacron 服务在特定时间和日期运行应用程序或者脚本。
这允许可靠的无人值守系统操作在系统出现故障时不会错过预定事件,它们会在预定时间后尽快运行。
anacron 操作的候选者通常是必须执行的系统管理活动,例如日志轮换,即使晚了也是如此。
与 cron 服务不同,anacron 不会错过预定作业的执行,即使系统断电。
该活动将在系统下次可用时执行。
这使得 anacron 成为启动基本系统管理任务(例如备份或者磁盘空间恢复)的首选。
工作通常分为每日、每周和每月三类。
控制脚本是普通的 shell 命令行,放置在 /etc/cron.[class] 目录中。
Anacron 确保每个作业按预定的时间间隔运行;没有保证这些作业运行的特定时间。
每次作业运行时,时间戳文件 /var/spool/anacron/cron.[class] 都会更新。
这个时间戳文件也是 anacron 用来确定是否需要运行作业的相同机制。
服务控制
要在将来重新启动和关闭时管理 anacron 服务,请使用 chkconfig 工具:
# chkconfig anacron on
# chkconfig --list anacron anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# chkconfig anacron off
要立即控制 anacron 服务,请使用 service 命令:
# service anacron Usage: /etc/init.d/anacron {start|stop|restart|condrestart|status}
下表描述了每个可用的命令:
命令 | 描述 |
---|---|
start | 调用 anacron(8) 守护进程并提供 %26#8220;-s%26#8221; 命令行开关。 这会强制 anacron(8) 串行执行所有预定的应用程序和脚本,而不是并行启动它们。 |
stop | 终止 anacron(8) 守护进程。 任何活动的应用程序或者脚本都不会受到影响,并会继续运行直至完成。 |
restart | 相当于先停止再启动命令。 |
condrestart | 如果 anacron 服务当前未运行,则忽略,否则相当于重启命令。 通常由 RPM 升级使用,以避免无意中启动服务。 |
status | 显示"anacron is stopped"; 除非守护进程正在主动运行预定的应用程序或者脚本。 |