很多运维任务都是在凌晨完成的,如果运维工程师每天都是凌晨干活,那么用不了多久,运维工程师就挂掉了!所以学习定时与延时任务很有必要。
【19年秋招大疆运维工程师笔试题】11月份每天早上6点-12点之间,每隔两个小时执行脚本httpd.sh
* 6-12/2 * 11 * sh httpd.sh
一.定时任务
1.crond 定时任务服务
2.crond的设定方式
①命令设定方式: 用户级别定时任务
crontab -u root -e ##设定
crontab -u root -l ##查看
crontab -u root -r ##删除
/var/spool/cron/root ##任务存储位置
时间任务
分钟 小时 日 月 周系统命令|脚本
08-17 * * * * ##每天每小时08分-17分
08-17 * * * 3,5 ##每周3和周五每小时08分-17分
08-17/2 * * * 3,5 ##每周3和周五每小时08分-17分时间段每隔2分钟
08-17/2 10 * * 3,5 ##每周3和周五10点08分-17分时间段每隔2分钟
08-17/2 10 5 * 3,5 ##每周3和周五及每月5号10点08分-17分时间段每隔2分钟
08-17/2 10 5 3 3,5 ##3月每周3和周五及3月5号10点08分-17分时间段每隔2分钟
②配置文件方式设定: 系统级别cron,只有超级用户可操作
/etc/cron.d ##系统级别cron设定文件存放路径
vim /etc/cron.d/westos ##cron设定文件
时间 用户动作
* * * * * root rm -fr /mnt/*
/etc/cron.daily/ ##每天任务
/etc/cron.hourly/ ##每小时任务
/etc/cron.monthly/ ##每月任务
/etc/cron.weekly/ ##每周执行动作
3.用户级别crond控制设定
vim /etc/cron.deny ##cron用户控制黑名单,此名单中的人不能执行cron命令
vim /etc/cron.allow ##cron白名单,此文件默认不存在
##当此文件存在时cron.deny不生效
##当此文件存在,系统普通用户默认不能执行cron,只有在名单中才可以
二.延时任务
1.延迟任务的发起
at 10:10
> rm -fr /mnt/* ##执行内容
>[ctrl]+[d] ##任务发起
at -l ##查看任务队列
at -c 任务号 ##查看任务内容
at -r 任务号 ##取消任务
2.当延迟任务有输出,输出会以邮件形式发送到任务发起者邮箱中
yum install mailx postfix
systemctl start postfix
systemctl enable postifx
mail -u root ##查看root用户的邮件
No mail for root ##root用户没有邮件
> /var/mail/root ##清空root邮件
at 10:30
>timedatectl ##此命令有输出但不会显示到字符设备中
##此命令输出会用邮件发送给at发起人
[root@rhel8_node1 ~]# mail -u root
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/mail/root": 1 message 1 new
>N 1 root Sat Feb 22 10:27 27/1226 "Output from
your job " ##at输出邮件
& 1 ##输入邮件编号查看
&q #退出
3.at命令的控制
/etc/at.deny ##at控制黑名单,此名单中的人不能执行at
/etc/at.allow ##此文件默认不存在
##当此文件存在/etc/at.deny不生效
##当此文件存在系统普通用户默认不能执行at,只有在名单中的人可以