运维学习笔记 十四、系统延时任务及定时任务
1.系统延时任务
[root@localhost ~]# at 23:37 ##设定任务执行时间
at> rm -fr /mnt/* ##任务动作
at> <EOT> << CTRL +D ##用 ctrl+D 发起任务
[root@localhost ~]# at now+1min ##延时 1 分钟
at> rm -fr /mnt/*
at> <EOT>
at -l ##查看任务列表
at -c 任务号 ##查看任务内容
at -r 任务号 ##取消任务执行
注意:
当任务有输出时,输出会以邮件的形式发送给 at 任务的发起者
$sudo mail -u root ##查看超级用户邮件
>1 ##查看第一封邮件
>q ##退出
$sudo > /var/spool/mail/root ##清空邮件
2.at 任务的黑白名单
黑名单 /etc/at.deny ##系统中默认存在,在此文件中出现的用户不能执行 at
白名单 /etc/at.allow ##系统中默认不存在,当文件出现,普通用户不能执行 at
##只有在名单中的用户可以,并且/etc/at.deny 失效
3.系统定时任务
1.crontab 时间表示方式
* * * * * ##每分钟
*/2 * * * * ##每两分钟
*/2 09-17 * * * ##早 7-晚 5 每两分钟
*/2 */2 * * * ##每隔 2 小时每两分钟
*/2 09-17 3,5 1 5
*/2 09-17 * * 5 ##每周周五早 9 晚 5
* * * * * program
| | | | | +-需要执行的任务
| | | | +----- 星期中星期几 (0 - 7) (星期天为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
2.系统控制 crontab 的服务
crond.service ##当程序开启时定时任务生效
3.crontab
crontab -e -u
crontab -l -u
crontab -r -u
说明:
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数说明:
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 vim
-r : 删除目前的时程表
-l : 列出目前的时程表
4.文件方式设定定时任务
$sudo vim /etc/cron.d/file
* * * * * username action ##模板
* * * * * root rm -fr /mnt/* ##实例
5.crontab 的黑白名单
/etc/cron.deny ##系统中默认存在,在此文件中出现的用户不能执行 crontab
/etc/cron.allow ##系统中默认不存在,当文件出现,普通用户不能执行 crontab
##只有在名单中的用户可以,并且 /etc/at.deny 失效
##这两个名单都不会影响/etc/cron.d/目录中定时任务的发起及执行
4.系统中临时文件的管理方式
$sudo cd /usr/lib/tmpfiles.d/
$sudo vim westos.conf
d /mnt/westos 777 root root 8s
systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*