延迟任务
延迟任务的发起
可以使用at命令将延迟任务发起:
实验素材建立:
在/mnt/下新建文件,并使用watch命令将/mnt/监控:
watch -n 1 ls /mnt/* ##建立监控建立/mnt下所有文件
重新打开一个shall,并在/mnt/下新建文件:
touch /mnt/testfile{1..5} ## 在/mnt新建5个测试文件
到此,实验素材建立完成。
at命令
使用at命令将延迟任务发起:
格式为:at 时间
输入完成按回车键输入延迟内容:
延迟 03:34删除/mnt/所有文件:
输入完成后,使用<ctrl+d>将任务发起:
在监控窗口可以看到,建立的testfile{1…5}成功在03:34删除:
同样的实验,使用at -l 可以查看任务队列 :
使用at -c 任务号 查看任务内容:
使用at -r 任务号 删除延迟任务:
当延迟任务有输出,输出会以邮件形式发送到任务发起者邮箱中
在rhel8中,默认没有安装mail命令,这里我们进行安装:
安装mailx:
安装邮件服务mailfix:
systemctl start postfix.service ##重启postfix
systemctl enable postfix.service ##设置postfix开机自启动
使用mail命令查看当前用户邮件信息:
当前用户(root)没有邮件消息。
mail 目标用户:给目标用户发送邮件,输入完成后回车,按‘.’进行发送:
清空邮件信息:
执行命令timedatectl。若不是延迟任务,则此命令在shall有输出:
现在,发起延迟任务timedatectl。这个时候在到任务执行时间后,并不会在shall中输出,而是以邮件形式发送给当前用户:
在邮件总能看到任务输出:
输入邮件编号,查看邮件消息:
at命令的控制
at黑名单
在默认情况下,系统中的任何用户都是可以执行at命令。
可以通过修改名单/etc/at.deny,此名单为at控制黑名单,此名单中的人不能执行at 命令
将用户xng添加进名单
切换到用户xng,使用at命令:
xng用户at命令不能执行。
切换到其他用户,使用at命令:
at 白名单
at白名单为/etc/at.allow 此文件默认不存在。当此文件存在,/etc/at.deny(黑名单)不生效,系统中普通用户默认不能执行at命令
,只有在名单的用户才有权执行at命令。
将haha添加进at.allow:
添加完成保存退出。
切换到用户haha执行at命令:
用户haha能够执行at命令。
切换到用户xng执行at命令:
用户xng不能执行at命令。
定时任务
延迟任务执行完毕后就任务结束了,不会进行循环执行。
而在系统管理的时候,经常要进行周期性的任务,所以会用到定时任务服务:crond
定时任务服务crond
可以看到定时任务服务在rhel7里默认是开启状态:
定时任务的设定方式
命令方式
(用户级别定时任务)
crontab -u root -e
-u为指定用户,-e为编辑任务。
回车后就可以编辑任务:
可以使用man 5 crontab 查看编写方式:
编写格式为:
时间 任务
可以看到时间的具体格式:
时间是按照:分钟 小时 天 月 周 的格式进行编辑。
注意:0和7都代表星期天。首先建立监控来监控/mnt/TEST
我们使用crontab -u root -e
来进行编辑定时任务:在12:11分在/mnt/TEST下建立file{1…5}
在12:11分,文件成功建立:
使用crontab -u root -l
查看定时任务:
使用 crontab -u root -r
取消root用户发起的定时任务。
定时任务会存放在系统的/var/spool/cron/用户 这个文件里:
时间的各种设定方式举例:
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分时间段每4隔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
在此目录中进行文件形式编辑:
可以看到,到整分钟时/mnt/TEST/file{1…5}被成功删除!
所以只需要在/etc/cron.d/下新建定时文件即可。
格式为: 时间 用户 任务
注意:/etc/cron.d/目录权限如下:
只有超级用户可写,即系统级定时任务只有超级用户可以操作。
可以看到,在/etc下,还有有关cron的一些目录:
这些目录具体存放内容如下:
文件 | 存放内容 |
---|---|
/etc/cron.daily/ | 每天任务 |
/etc/cron.hourly/ | 每小时任务 |
/etc/cron.monthly/ | 每月任务 |
/etc/cron.weekly/ | 每周执行动作 |
在我们编写定时文件完毕后,记得给文件加上执行权!
在/etc/cron.hourly/下会有检测定时任务漏执行的脚本:
如果检测到漏执行任务,会立即执行此任务。
当定时任务有输出,输出会以邮件形式发送到任务发起者邮箱中
这一点与延迟任务相同:
定时任务,执行命令timedatectl
当有输出是,不会在shall界面输出。会以邮件方式发送给定时任务发起人:
用户级别crond控制设定
vim /etc/cron.deny ##cron用户名单,用法同at.deny
vim /etc/cron.allow ##cron白名单,用法同at.allow
具体使用方法参考上边’at黑名单’‘at白名单’使用。