目录
一、调度延迟的用户作业:
1、延迟的用户作业:
2、查看延迟的用户作业:
3、从计划中删除作业:
二、调度周期性用户作业:
1、周期性用户作业:
2、调度周期性用户作业:
3、用户作业格式:
三、调度周期性系统作业:
1、周期性系统作业:
2、/etc/anacrontab 文件:
3、Systemd 定时器:
一、调度延迟的用户作业:
计划好运行的命令被称为任务或作业。红帽企业 Linux 可通过 at 命令调度延迟任务,at 软件包包含 atd 守护进程,和一组命令(at、atq 等)。在默认的 RHEL 安装过程中,将自动安装并启用 atd 守护进程 。root 及普通用户可以使用 at 命令创建计划任务,atd 守护进程提供 a-z 共 26个队列,按字母排序,越后面的队列优先级越低。
1、延迟的用户作业:
使用 at TIMESPEC 可创建作业,at 从 stdin 中读取指令,直至 Ctrl+D 终止。 也支持从脚本中导入指令。如下图将 date >> /home/student/myjob.txt 作为输入传递给 at 命令,作业从现在起两分钟后运行。
注:上述中 TIMESPEC 参数的使用非常灵活,如何使用可以参考 /usr/share/doc/at/timespec 中的内容。
2、查看延迟的用户作业:
用户可使用 atq 或 at -l 命令查看用户的待处理作业。
上图中标注部分含义如下:
(1)此作业唯一编号;
(2)作业的执行日期、执行时间;
(3)表示作业已排入默认队列 a(不同的作业可以排入至不同的队列中);
(4)作业的所有者。
at -c JOBNUMBER 可以查看指定作业的详细信息。
注:普通用户只能查看和管理自己的作业,而 root 用户可以查看和管理所有作业。
3、从计划中删除作业:
atrm JOBNUMBER 命令可删除调度的作业,当用户不再需要调度的作业时,可将其从计划中删除。
二、调度周期性用户作业:
1、周期性用户作业:
按计划重复运行的作业被称为周期性作业 。红帽企业 Linux 提供了 crond 守护进程管理周期性作业,由 cronie 软件包提供,会默认安装并启动 。crond 守护进程可读取多个配置文件,使用 crontab 命令编辑配置文件 ,如果计划任务运行失败,crond 会发送邮件给指定用户。
2、调度周期性用户作业:
用户可使用 crontab 命令管理调度的作业,常用选项如下:
(1) -l 选项可列出当前用户的作业。
(2)-r 选项将删除当前用户的所有作业。
(3)-e 选项可编辑当前用户的作业。
(4)crontab filename 将删除所有作业,将其替换为从 filename 读取的作业(未指定具体文件时,此命令将使用 stdin 输入)。
注:-u 选项可以用来管理其他用户的作业,但它可以利用以 root 身份运行的个人作业,因此不推荐使用 -u 管理其他用户的作业。
3、用户作业格式:
crontab -e 调用 vim 进行计划任务的编辑,每行一个作业,支持空行和 # 注释行。
如上图 crontab 的字段格式从左到右分别为:分 时 日 月 周 命令。除命令外其余五个字段使用相同的语法规则。
(1)* 表示始终;
(2)数字指定具体的分钟数、小时数、日期或者星期;
(3)x-y 表示范围,从 x 到 y(含 x y );
(4)x,y 表示列表,同时也可以表示范围;
(5)*/x 表示每间隔 x 执行一次作业。
注:综上所述,上图中 */2 * * * Tue-Thu 表示周二到周四每两分钟执行一次作业。
三、调度周期性系统作业:
1、周期性系统作业:
系统管理员需要经常运行周期性作业,此时会使用系统范围的 crontab 文件调度这些作业而非 crontab 命令。系统范围的 crontab 文件与用户的 crontab 类似,唯一的不同是系统范围的 crontab 文件的命令字段前面有一个额外用户字段,用于指定运行命令的用户。
注:(1)周期性系统作业,将始终在 /etc/cron.d 目录下创建自定义 crontab 文件 (为防止软件升级覆盖,尽量不要更新 /etc/crontab 文件);
(2)crontab 系统中还包含需要每时、每天、每周和每月运行的脚本目录。 这些目录中包含可执行的 shell 脚本,分别位于 /etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/ cron.monthly/ 目录中;
(3)使用 chmod +x script_name 命令可以将脚本变为可执行(脚本是可执行的才能运行)。
2、/etc/anacrontab 文件:
/etc/anacrontab 文件确保重要的作业始终运行,不会因为系统关闭或休眠而意外跳过应执行作业。/etc/anacrontab 文件调用 run- parts 命令运行每日、每周和每月的作业。
注:如果由于系统重启而导致某个每日运行的系统作业未按时执行,则在系统启动后将立即执行此作业。但启动作业可能会有几分钟的延迟,具体延迟可参考 /etc/anacrontab 中 Delay in minutes 参数值。
3、Systemd 定时器:
systemd 定时器单元可激活另一个不同类型的单元,只要待激活的单元名与该定时器的单元名匹配即可。
例如,sysstat 软件包含有:sysstat-collect.timer 表示每隔 10 分钟收集系统统计信息,现将每 10 分钟更改为每 2 分钟如下:
更改 systemd 配置后,使用 systemctl daemon-reload 让 systemd 重新加载配置。
而在重新加载后,需要使用 systemctl 激活 timer unit 。