Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

24.2. 使用 Anacron 计划周期性作业

anacron (如 cron )是一项允许您定期调度运行任务(通常称为作业)的服务。但是 ,anacroncron 有两种不同之处:

  • 如果系统未在计划的时间运行,anacron 作业会延迟到系统运行;
  • anacron 作业最多可以每天运行一次。

用户 在 anacron 表文件中指定 anacron 作业,也称为 anacrontab 文件。然后,crond 服务读取这些文件,该服务 将执行作业。

24.2.1. Anacrob 任务的先决条件

在调度 anacron 作业前:

  1. 验证您已安装 cronie-anacron 软件包:

    ~]# rpm -q cronie-anacron

    cronie-anacron 可能已经安装,因为它是 cronie 软件包的子软件包。如果没有安装,请使用这个命令:

    ~]# yum install cronie-anacron
  2. 安装时,crond 服务 已启用 - 在引导时自动启动。如果禁用该服务,启用该服务:

    ~]# systemctl enable crond.service
  3. 为当前会话启动 crond 服务:

    ~]# systemctl start crond.service
  4. (可选) 配置 anacron.例如,您可以更改:

    • 执行作业时要使用的 shell
    • PATH 环境变量
    • 如果作业发送电子邮件,请邮件.

      有关配置 anacron 的相关信息,请参见 anacron tab(5)手册页。

重要

默认情况下,anacron 配置包含一个阻止其运行(如果计算机未插入)的条件。此设置可确保通过运行 anacron 作业,防止垃圾排空。

如果您想允许 anacron 在 battery 电源上运行,请打开 /etc/cron.hourly/0anacron 文件并注释掉以下部分:

# Do not run jobs when on battery power
online=1
for psupply in AC ADP0 ; do
  sysfile="/sys/class/power_supply/$psupply/online"

  if [ -f $sysfile ] ; then
    if [ `cat $sysfile 2>/dev/null`x = 1x ]; then
      online=1
      break
    else
      online=0
    fi
  fi
done

24.2.2. 调度 Anacron 作业

以 root 用户身份调度 anacron 作业

root 用户使用 /etc/anacrontab 中的 anacron 表。以 root 用户身份使用以下步骤调度作业。

root 用户身份调度 anacron 作业

  1. 选择:

    • 执行作业的频率。例如,使用 1 指定每天或 3 在 3 天内指定一次。
    • 执行作业的延迟。例如,使用 0 指定不延迟,或者 60 代表 1 小时的延迟。
    • 作业标识符,它将用于日志记录。例如,使用 my.anacron.job 将作业记录为 my.anacron.job 字符串。
    • 要执行的命令。例如:使用 /usr/local/bin/my-script.sh

      将所选值合并到作业规格中。以下是一个示例规格:

      3 60 cron.daily /usr/local/bin/my-script.sh
  2. 将结果行添加到 /etc/anacrontab

该作业现在将按计划运行。

有关简单作业示例,请查看 /etc/anacrontab 文件。有关如何指定作业的完整参考,请参见 anacrontab(5)手册页。

计划 Hourly、Daily、Weekly 和 Monthly 作业

您可以使用 anacron 计划每日、每周和每月的作业。请参阅 “计划 Hourly、Daily、Weekly 和 Monthly 作业”一节