1.基础知识
- linux系统的定时任务就像我们在日常生活中使用的闹钟一样,一到固定的时间就会有相应的动作
- linux系统的延时任务就像闹钟响了之后不想起床,延迟几分钟再响
- 定时任务是永久的,延时任务是一次性的
2.实验环境搭建
实验环境为自己搭建的虚拟机(WWW),并登陆
- 延时任务:
(1)在WWW虚拟机执行操作
touch /mnt/file{1..10}
(2)开启监控界面,监控/mnt的内容
watch -n 1 "ls /mnt"
(3)编写延时任务
at 15:07 ##延迟到什么时候
rm - fr /mnt/* ##这个时候做什么动作
ctrl+d 来发起这个延迟任务
(4)at 命令
at -l | 列出所有延迟任务 |
---|---|
at -c 【任务号】 | 查看【任务号】的详细信息 |
at -r【任务号】 | 删除【任务号】的任务 |
at now+1min | 建立一分钟以后的任务 |
3.系统延迟任务的黑白名单
系统中的所有用户默认是可以执行延迟任务
- 用户延迟黑名单(/etc/at.deny)
注:默认存在
测试:
- 用户白名单(/etc/at.allow)
将ww1加入白名单
注:白名单默认不存在,一旦存在,只允许超户执行延迟任务
白名单存在后,系统将不再检测黑名单
测试:
4.利用crontab命令设定系统定时任务(永久)
- 执行定时任务的时候,crond.service这个服务必须开启
- man 5 crontab可以查看这个命令的用法
- cat /var/spool/cron/root定时任务是放在这个文件里面的,删除任务的同时文件也就没有
(1)开启定时服务器
(2)crontab用法
查看用法
man 5 crontab
注:设定时间必须写全所有列
crontab e | 表示编辑 |
---|---|
crontab u | 指定用户 |
crontab l | 列出 |
crontab r | 删除 |
- 每分钟
crontab -e -u root
* * * * * rm - fr /mnt/*
- 每2分钟
crontab -e -u root
*/2 * * * * rm - fr /mnt/*
- 13点和15点的每2分钟
crontab -e -u root
*/2 13,15 * * * rm - fr /mnt/*
-每月的1-5天的13点和15点的每2分钟
crontab -e -u root
*/2 13,15 1-5 * * rm - fr /mnt/*
- 每3-7月的1-5天的13点和15点的每2分钟
crontab -e -u root
*/2 13,15 1-5 3-7 * rm - fr /mnt/*
- 每3-7月的1-5天的13点和15点的每2分钟 的每个星期2和星期4
crontab -e -u root
*/2 13,15 1-5 3-7 2,4 rm - fr /mnt/*
测试:
crontab -e -u root
cat /var/spool/cron/root
4.黑白名单(与at一样)
编写/etc/cron.deny与/etc/cron.allow文件
5.临时文件的管理
systemd-tmpfiles --create ##创建
systemd-tmpfiles --clean ##清除
(1)创建以及清理的规则(/usr/lib/tmpfiles.d)
以.conf文件结尾的均为临时文件的策略
(2)编写.cof文件
(3)测试
在mnt下建立westos文件
编写文件类型 文件名称 文件权限 所有人 所有组 生命周期
建立临时文件
systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
touch file1
在删除文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*
此时文件不会自动消失,因为该文件的生命周期还未到
注:只有当目录下的文件的生命周期到了以后(周期到了也不会自动消失),clean才会清除它, 但是rm -rf可以随时删除它