第 24 章 自动执行系统任务
您可以将 Red Hat Enterprise Linux 配置为自动运行任务,也称为作业 :
- 使用 cron 定期使用,请参阅 第 24.1 节 “使用 Cron 调度周期性作业”
- 使用 anacron 在特定天数内异步显示,请参阅 第 24.2 节 “使用 Anacron 计划周期性作业”
- 在使用 时的特定时间 , 请查看 第 24.3 节 “使用 at 将作业计划在特定时间运行”
- 使用 批处理 系统负载平均值降至指定值后,请参阅 第 24.4 节 “使用批处理调度作业在系统负载 Drop 上运行”
- 下一次引导后,请参阅 第 24.5 节 “使用 systemd 单元文件调度作业在下一次引导时运行”
本章论述了如何执行这些任务。
24.1. 使用 Cron 调度周期性作业
					Cron 是一个服务,可让您定期调度运行任务(通常称为作业)。只有在系统按计划的时间运行时, 才会执行 cron 作业。有关可以在系统引导时将其执行延迟到调度作业,因此如果系统未运行,则作业不会"丢失",请参阅 第 24.3 节 “使用 at 将作业计划在特定时间运行”。
				
					用户在 cron 表文件中指定 cron 作业,也称为 crontab 文件。然后,crond 服务读取这些文件,该服务 将执行作业。
				
24.1.1. Cron 作业的先决条件
						在调度 cron 任务前:
					
- 安装 cronie 软件包: - yum install cronie - ~]# yum install cronie- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 安装时,crond - 服务已启用 - 在引导时自动启动。如果禁用该服务,启用该服务:- systemctl enable crond.service - ~]# systemctl enable crond.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为当前会话启动 - crond服务:- systemctl start crond.service - ~]# systemctl start crond.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- (可选) 配置 cron.例如,您可以更改: - 执行作业时要使用的 shell
- 
										PATH环境变量
- 如果作业发送电子邮件,请邮件. - 有关配置 - cron的详情,请查看 crontab(5)手册页。
 
24.1.2. 调度 Cron 作业
以 root 用户身份调度作业
						root 用户使用 /etc/crontab 中的 cron 表,或者最好在 /etc/cron.d/ 中创建 cron 表文件。使用这个流程以 root 用户身份调度作业:
					
- 选择: - 
										在每小时的几分钟内执行作业。例如,使用 0,10,20,30,40,50或0/10指定每小时 10 分钟。
- 
										作业执行一天的几小时。例如,使用 17-20指定从 17:00 到 20:59 的时间。
- 
										执行作业的每月天数。例如,使用 15指定一个月 15 天。
- 
										在一年内执行该作业。例如,使用 Jun、Jul、Aug或6,7,8指定一年的暑期月。
- 在一周内执行该作业的天数。例如,将 - *用于作业以独立于星期几执行。- 将所选值合并到时间规格中。以上示例值导致这个规格: - 0,10,20,30,40,50 17-20 15 Jun,Jul,Aug *
 
- 
										在每小时的几分钟内执行作业。例如,使用 
- 
								指定用户。该作业将像该用户运行一样执行。例如,使用 root。
- 
								指定要执行的命令。例如:使用 /usr/local/bin/my-script.sh
- 将以上规格放在一行中: - 0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * root /usr/local/bin/my-script.sh - 0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * root /usr/local/bin/my-script.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
								将生成的行添加到 /etc/crontab,或者最好在/etc/cron.d/中创建 cron 表文件,并在其中添加 行。
该作业现在将按计划运行。
						有关如何指定作业的完整参考,请参阅 crontab(5)手册页。有关基本信息,请查看 /etc/crontab 文件的开头:
					
以非 root 用户身份调度作业
非 root 用户可以使用 crontab 实用程序配置 cron 作业。如果由该用户执行,作业将像 一样运行。
以特定用户身份创建 cron 任务 :
- 在用户的 shell 中运行以下命令: - crontab -e - [bob@localhost ~]$ crontab -e- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 这将开始使用由 - VISUAL或- EDITOR环境变量指定的编辑器编辑用户自己的- crontab文件。
- 以与 “以 root 用户身份调度作业”一节 中的相同方式指定作业,但将该字段保留为用户名。例如,而不是添加 - 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 * bob /home/bob/bin/script.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 添加: - 0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * /home/bob/bin/script.sh - 0,10,20,30,40,50 17-20 15 Jun,Jul,Aug * /home/bob/bin/script.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 保存文件并退出编辑器。
- (可选)要验证新作业,请运行以下命令列出当前用户 crontab 文件的内容: - crontab -l - [bob@localhost ~]$ crontab -l @daily /home/bob/bin/script.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
计划 Hourly、Daily、Weekly 和 Monthly 作业
调度一个每小时、每天、每周或每月的作业:
- 将您希望作业执行的操作放入 shell 脚本中。
- 将 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 目录中的任何脚本。