一 延时文件
首先我们在 /mnt/ 目录下建立几个文件,然后再用at 命令来执行
[root@localhost ~]# at 14:24 #设定任务执行时间
at> rm -rf /mnt/* #任务动作
at> <EOT> <---> ctrl+d #用ctrl+d发起任务
job 12 at Wed Aug 1 14:24:00 2018
示例:开启有两个虚拟机shell,一个watch -n 1 ls /mnt/,另一个发起命令
可以看到 /mnt 下的文件都被删除了
[root@localhost ~]# at now+1min #延时1分钟
at> echo hello
at> <EOT>
job 13 at Wed Aug 1 14:38:00 2018
at -l #查看任务列表
at -c 任务号 #查看任务内容
at -r 任务号 #取消任务执行
注意:当任务有输出时,输出会以邮件形式发送给at任务的发起者
mail -u root #查看超级用户的邮件
number #查看第几封邮件
q 退出
> /var/spool/mail/root #清空邮件
二 at任务的黑白名单
/etc/at.deny #系统中默认存在,在此文件中出现的用户不能执行at
在 deny中 输入westos 为黑名单,让其不能执行 at 命令
/etc/at.allow #系统中默认不存在,此文件出现时,不在上面的普通用户不能执行at
#此文件优先级高于at.deny,当此文件出现时,不读取at.deny中的内容
在白名单中输入 westos ,在上面的可以执行 at 命令,因此 student 用户不能执行
虽然黑名单中也有 westos,但是白名单的优先级大于黑名单
三 定时任务
1)crontab时间表示方式
* * * * * #每分钟
*/2 * * * * #每2分钟
*/2 09-17 * * * #早9到晚5每2分钟
*/2 09-17 1 3,5 5 #3月和5月每周五及3月1日,5月1日的早9到晚5每2分种
*/2 09-17 * * 5 #每周五早9到晚5的每2分钟
2) crontab的命令
crontab -e -u 用户 #创建
crontab -l -u 用户 #显示
创建一个命令 意为每分钟删除一次 /mnt 目录下的文件
crontab -r -u 用户 #删除
可以看到命令被删除
3) 系统控制crontab的服务
crond.service #当程序开启时任务生效
可以看到服务状态是开启的
我们可以用stop 命令将其关闭
可以看到 crontab 服务被停止,这用你写的 at 命令将会失效
四 文件方式设定定时任务
vim /etc/cron.d/file
* * * * * username action
* * * * * root rm -rf /mnt/file*
在文件中输入 (* * * * * root rm -rf /mnt/file*) 这个命令,表示每分钟清除一次 /mnt 下面 file* 文件
可以看到 /mnt 下面有文件 file{1..4} 四个文件,现在时间 是 56秒
可以看到刚过 整分,文件就被删除了
注意:(deny 和 allow )这两个文件不影响/etc/cron.d/目录中定时任务的发起及执行
五 系统中临时文件的管理方式
cd /usr/lib/tmpfiles.d/
vim westos.conf
配置内容: d /mnt/westos 777 root root 8s
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* #执行一遍临时文件配置,才能建立/mnt/westos
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* #运行一遍临时文件配置来清除文件
意思就是在 /mnt/westos 目录下的文件 超过 8s 的,执行clean 命令可以删除, 而没有超过 8s 的,不能被清除
可以看到第一次清除时 ,由于 file1 超过了8s 被清除了,而file2 则因没超过 8s 而依然存在