一、系统延时任务
【1】at定时命令的使用
at 22:45 | 在22:45时执行 |
---|---|
at now+1min | 在现在时间再过1分钟后执行 |
【2】at 参数命令
at -l | 查看任务列表 |
---|---|
at -c | 查看任务内容 |
at -r | 取消任务执行 |
例:
[root@localhost ~]$ at -l
4 Fri Jul 26 09:25:00 2019 a kiosk
[root@localhost ~]$ at -c 4
rm -fr /home/kiosk/Desktop/file{1…10}
[root@localhost ~]$ at -r 4 #取消任务执行
【3】当任务有输出命令时,输出会以邮件的形式发送给at任务的发起者
mail -u root #查看超级用户邮件
1 #查看第一封邮件
q #退出
例:at命令执行echo会将内容以邮件方式发给命令发起者
【1】发起命令
【2】时间未到查不到邮件
【3】时间到
【3】清空邮件
> /var/spool/mail/root #清空root的邮箱
> /var/spool/mail/kiosk #清空kiosk用户的邮箱
二、at命令白名单和黑名单
/etc/at.allow #at用户白名单,名单里可执行,不在则不能执行。
/etc/at.deny #at用户黑名单,名单里不可执行。
root用户不受限制 。root是管理者,文件只对操作者有用。
/etc/at.allow默认不存在,/etc/at.deny默认存在
当/etc/at.allow存在(自己建立)时,/etc/at.deny失效,不去执行
测试:
【1】设置黑名单
【2】功能执行
三、系统定时任务
【1】crontab时间表示方式
* * * * *
每隔 时间 天 月 周
* * * * * | 每分钟 |
---|---|
*/2 * * * * | 每两分钟 |
*/2 09-17 * * * | 早9-晚5每两分钟 |
*/2 */2 * * * | 每隔2小时每两分钟 |
*/2 07-17 3,5 1 5 | 每周周五的9-17点每隔两分钟执行一次以及1月3和1月5 |
【2】系统控制crontab的服务
systemctl stop crond.service #关闭服务,则不执行文件内容
systemctl restart crond.service #开启
systemctl status crond.service #查看状态
【3】crontab
crontab -u root -e | 以root身份打开编辑文件 |
---|---|
crontab -u root -l | 以root身份查看文件内容 |
crontab -u root -r | 以root身份删除文件内容 |
测试:
[root@localhost ~]# touch /root/Desktop/file{1…10}
[root@localhost ~]# crontab -u root -e #打开文件编辑执行内容
crontab: installing new crontab
[root@localhost ~]# crontab -u root -l
[root@localhost ~]# systemctl stop crond.service
文件内容不执行
[root@localhost ~]# systemctl restart crond.service
执行
[root@localhost ~]# crontab -u root -r #删除任务
[root@localhost ~]# crontab -u root -l #再次查看任务
no crontab for root
【4】文件方式设定定时任务
只有超级用户可写
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/目录中定时任务的发起和执行
用户黑名单中的用户(student)不能执行:
[root@localhost ~]# crontab -u student -e
[root@localhost ~]# vim /etc/cron.d/file
student rm -fr /mnt/file{1…10}
[student@localhost ~]$ crontab
四、清除临时文件
/usr/lib/tmpfiles.d #临时文件目录
vim westos.conf #创建临时文件westos.conf
systemd-tmpfiles --create /usr/lib/tmpfiles.d/westos.conf #将westos.conf变为临时文件
touch /mnt/westos/file #在westos.conf记载的目录下创建临时文件
/usr/lib/tmpfiles.d/westos.conf #清除临时文件,只有生命周期到了才会被清除。
生命周期指文件的生命周期。
实验步骤:
【1】vim westos.conf
【2】使用watch -n 1 "ls -lR /mnt/ "
【3】systemd-tmpfiles --create /usr/lib/tmpfiles.d/westos.conf #将westos.conf变为临时文件
【4】touch /mnt/westos/file #在westos.conf记载的目录下创建临时文件
【5】systemd-tmpfiles --clean /usr/lib/tmpfiles.d/westos.conf #清除临时文件,只有生命周期到了才会被清除。