一、延时任务
- 延时任务:系统的延时任务是通过at命令是实现的,负责这个延时任务的服务是atd服务,通常这个服务是默认开启的
- 延时任务的发起过程:
(1)at time 表示在某一时刻发起任务
(2)dosomething 任务具体执行的内容
(3)ctrl+d 保存该命令
- 测试
(1)先在/mnt下建立文件,并采用监控命令监控/mnt里的内容
监控命令如下
(2)发起延时任务(06:34分删除/mnt下的所有东西)
注意:这里是重新打开一个shell进行测试
延时任务执行的时间为06:34分过一秒
- 延时任务的常见命令
- at -l 查看任务
- at -c +任务号 查看任务内容
- at -r +任务号 撤销任务
- at now+1min 从现在起延时一分钟发起任务
- 延时任务的黑名单
- /etc/at.deny 是延时任务的黑名单,放在这个文件中的用户不能设置延时任务
- 测试
(1)编辑延时任务的黑名单,将westos用户写入
(2)切换到westos用户后,不能使用at命令
student用户可以正常使用
- 延时任务白名单
- 黑名单本身存在,而白名单本身不存在
- 所以我们要建立白名单
- 当白名单被建立出来,默认所有的用户都加入黑名单,只用在白名单中的用户可以设置延时任务
(1)测试一:当白名单建立出来以后,westos和student用户默认加入黑名单,不能设置延时任务
(2)测试二:编辑白名单,将student用户写入
发现student用户可以设置延时任务,而westos仍然在黑名单中,不能设置延时任务
二、定时任务
- 定时任务:延时任务只能执行一次,对任务进行一次调度,但是如果我们想循环调度某个工作,就必须采用定时任务
- 命令:crontab
注意:此命令的使用必须在crond服务开启的前提下才能使用
- 定时任务的发起
- 在student用户身份下设置一个定时任务
- 任务格式设置如下:
* * * * * 分别代表 分 时 日 月 周
* * * * * rm -fr /mnt/* 表示每一天的每一分钟执行此任务(执行的时间为每分过一秒)
*/2 * * * * rm -fr /mnt/* 每一天的每两分钟
*/2 09,17 * * * rm -fr /mnt/* 每一天9点和下午5点的每两分钟
*/2 09-17 * * * rm -fr /mnt/* 每一天9点到下午5点的每两分钟
*/2 09-17 * * 2 rm -fr /mnt/* 每周二9点和下午5点的每两分钟
*/2 09-17 1,15 * 2 rm -fr /mnt/* 每月1号和15号以及每周二9点和下午5点的每两分钟
*/2 09-17 1,15 7 2 rm -fr /mnt/* 7月1号和15号以及每周二9点和下午5点的每两分钟
- 查看定时任务的方式以下两种
1.crontab -u root -l
2.cat /var/spool/cron/student
- 测试
(1)切换到student用户下,在其家目录下建立文件,并使用监控命令对其家目录进行监控
发现整分过一秒后,家目录下的东西被清空
注意: 定时任务是循环调度的,如果再在student家目录中建立文件,那么整分过一秒仍会执行删除命令,不像延时任务只能执行一次
- crontab -u student -r 表示删除系统中所有的定时任务
4. 定时任务黑名单 - /etc/cron.deny 是定时任务的黑名单,放在这个文件中的用户不能设置定时任务
- 测试:
编辑定时任务黑名单,将westos用户写入
发现westos用户不能设置定时任务,而student用户可以
- 定时任务白名单
- 同延时任务一样,定时任务的白名单不存在,需要我们手动创建
- 当白名单创建成功后,所有用户默认进入黑名单
- 编辑定时任务白名单,只有在白名单里存在的用户才能设置定时任务
- 注意: 如果在root用户身份下指定student用户(本身在黑名单中)设置定时任务,是可以实现的
- 设置系统级的定时任务
- crontab形式设置的 是用户级别的定时任务
而在/etc/cron.d下设置的是系统级别的定时任务 - 设置方式:
注意 这里的设置格式与crontab方式有不同
三、临时文件
- 临时文件概念: 清理定时任务的文件就是临时文件
- 作用: 为了防止系统中的资源被浪费,系统中有清理临时任务的机制,将一些滞留时间超过规定时间的文件清理
- 存放位置: 在系统中 /usr/lib/tmpfiles.d/ 目录下存放
- 示例:
- 切换到系统存放临时文件的目录下
- 建立自己的用来清除临时文件的文件
注意:
d 表示文件类型是目录
/mnt/westos 表示要执行的文件
777 表示对文件授予权限为满权限
两个root表示,以root用户root组的身份去执行
8s 表示在/mnt/westos下创建的文件生命周期超过8s才可以被清理 - 重新打开一个shell,用监控命令监控/mnt下的内容
测试前可以先将/mnt下的东西清除掉,保持测试环境纯净
- systemd-tmpfiles --create /usr/lib/tmpfiles.d/* 执行临时文件配置
则/mnt下会创建一个westos目录,且权限为满
- 在/mnt下创建一个file文件
- systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* 表示清除满生命周期的文件
例如上面创建的/mnt/westos/file1,从文件创建那一刻开始时间满8秒,执行clean就会删除,如果没有达到生命周期(8秒),则不会删除