Red Hat Training

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

第 24 章 自动执行系统任务

您可以将 Red Hat Enterprise Linux 配置为自动运行任务,也称为作业

本章论述了如何执行这些任务。

24.1. 使用 Cron 调度周期性作业

Cron 是一个服务,可让您定期调度运行任务(通常称为作业)。只有在系统按计划的时间运行时, 才会执行 cron 作业。有关可以在系统引导时将其执行延迟到调度作业,因此如果系统未运行,则作业不会"丢失",请参阅 第 24.3 节 “使用 at 将作业计划在特定时间运行”

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

24.1.1. Cron 作业的先决条件

在调度 cron 任务前:

  1. 安装 cronie 软件包:

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

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

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

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

      有关配置 cron 的详情,请查看 crontab(5)手册页。

24.1.2. 调度 Cron 作业

以 root 用户身份调度作业

root 用户使用 /etc/crontab 中的 cron 表,或者最好在 /etc/cron.d/ 中创建 cron 表文件。使用这个流程以 root 用户身份调度作业:

  1. 选择:

    • 在每小时的几分钟内执行作业。例如,使用 0,10,20,30,40,500/10 指定每小时 10 分钟。
    • 作业执行一天的几小时。例如,使用 17-20 指定从 17:00 到 20:59 的时间。
    • 执行作业的每月天数。例如,使用 15 指定一个月 15 天。
    • 在一年内执行该作业。例如,使用 Jun、Jul、Aug6,7,8 指定一年的暑期月。
    • 在一周内执行该作业的天数。例如,将 * 用于作业以独立于星期几执行。

      将所选值合并到时间规格中。以上示例值导致这个规格:

      0,10,20,30,40,50 17-20 15 Jun,Jul,Aug *

  2. 指定用户。该作业将像该用户运行一样执行。例如,使用 root
  3. 指定要执行的命令。例如:使用 /usr/local/bin/my-script.sh
  4. 将以上规格放在一行中:

    0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * root /usr/local/bin/my-script.sh
  5. 将生成的行添加到 /etc/crontab,或者最好在 /etc/cron.d/ 中创建 cron 表文件,并在其中添加 行。

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

有关如何指定作业的完整参考,请参阅 crontab(5)手册页。有关基本信息,请查看 /etc/crontab 文件的开头:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
以非 root 用户身份调度作业

非 root 用户可以使用 crontab 实用程序配置 cron 作业。如果由该用户执行,作业将像 一样运行。

以特定用户身份创建 cron 任务

  1. 在用户的 shell 中运行以下命令:

    [bob@localhost ~]$ crontab -e

    这将开始使用由 VISUALEDITOR 环境变量指定的编辑器编辑用户自己的 crontab 文件。

  2. 以与 ???TITLE??? 中相同的方式指定作业,但将字段留有用户名。例如,而不是添加

    0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * bob /home/bob/bin/script.sh

    添加:

    0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * /home/bob/bin/script.sh
  3. 保存文件并退出编辑器。
  4. (可选)要验证新作业,请运行以下命令列出当前用户 crontab 文件的内容:

    [bob@localhost ~]$ crontab -l
    @daily /home/bob/bin/script.sh
计划 Hourly、Daily、Weekly 和 Monthly 作业

调度一个每小时、每天、每周或每月的作业:

  1. 将您希望作业执行的操作放入 shell 脚本中。
  2. 将 shell 脚本放在以下目录中之一:

    • /etc/cron.hourly/
    • /etc/cron.daily/
    • /etc/cron.weekly/
    • /etc/cron.monthly/

从现在开始,将执行脚本 - crond 服务会自动执行 /etc/cron.hourly、/ etc/cron.daily、/etc/cron.weekly/etc/cron.monthly 目录中的任何脚本。