一、系统的延时任务
1.at 命令
at 命令可以指定某一任务在将来的特定时间运行。该作业可能是一次备份、对您系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的作业正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后就可以安全注销 , 因为该任务会在与 shell 会话断开连接的情况下运行
at 命令必须指定任务应运行的时间。该指定可以是具体时间和 / 或日期( 例如星期一 , 10:00pm 或 7 月 15 日 ) 。也可以是当前时间的相对时间 ( 现在时间加上 5 分钟 , 现在时间加上 3 天或 4:00pm 加上1 周 ) 通过添加其他选项 , 您可以在任务完成是发送邮件 ( -m), 或者从文件中读取任务 ( -f 文件 ), 而无需通过标准输入进行在键入 at 命令行之后 , 按 Enter 并继续键入作业中包含的其他命令。
任务可由多个命令组成。在完成键入要运行的命令时 , 在单独出现的一行中按 Ctrl+d 完成任务
at命令的用法
at 时间 ##设定延时任务的时间,按ctrl+d表示人物提交
at now+时间 ##与上个命令类似
at -l ##查看所有的任务
at -c ##查看任务详情
at -r 任务号 ##取消任务
例如,我设置在06:13分删除mnt下的所有文件
到了06:13分以后,mnt底下的所有文件都被删除了,这就是定时任务
比如我设置延时后一分钟向文件内输入orange
在这个任务没有被执行之前,我们可以使用at -r 任务号 取消该任务
2.延时任务的黑白名单
黑名单:/etc/at.deny 用户名字出现在里面的不可以使用at命令
如上图所示,我把student添加到黑名单中,然后切换到student,使用student用户做一个延时任务,显示失败
白名单:/etc/at.allow这个文件是不存在的,所以使用白名单需要用户自己新建一个文件, 用户出现在里面的可以使用at命令
如果用户不在at.allow里面呢
如果at.deny和at.allow同时存在,那么优先级at.allow>at.deny,也就是说如果at.deny和at.allow里面都有student的话,student用户依旧可以创建延时任务
二、系统的定时任务
1.服务是由crond.service提供的,如果这个服务没有开启的话,那么不能使用定时任务
编辑定时任务
crontab -u root -e ##编辑定时任务
vim /var/spool/cron/root ##编辑定时任务,如果编辑其他用用户的定时任务,最后的文件是用户的用户名
crontab -e ##直接编辑当前用户的定时任务
编辑的格式如下
* * * * * 命令 ##/2的意思就是每隔2个单位,/数字的意思就是隔多少个数字的单位
分 时 日 月 周
例如
* * * * * ##每分钟执行一次
*/2 * * * * ##每两分钟执行一次
*/2 09,17 * * * ##每天的9点和17点每两分钟执行一次
*/2 09-17 * * * ##每天的9点到17点每隔两分钟执行一次
*/2 09-17 1,15 * 2 ##每周二和每月的1号和15号的9点到17点都会每隔2分钟执行一次
*/2 09-17 1,15 7 2 ##7月的每周二和每月的1号和15号的9点到17点都会每隔2分钟执行一次
这里需要注意的是,每个参数之间是一个和的关系,而不是并且的关系,在上述例子最后两条可以看出来
查看以及取消定时任务
crontab -u root -l ##查看定时任务的内容
cat/var/spool/cron/root ##查看定时任务的内容
crontab -u root -r ##取消root的定时任务,这里可以写用户的名字
一个例子 ,该定时任务就是每隔一分钟就把xupt is a good school 输入到/mnt/lei里面
2.属于系统的任务通常保存在 /etc/crontab 文件中而不是使用crontab -e 编辑保存在个人文件中。更好的做法是用文本编辑器创建 crontab 文件并保存到 /etc/cron.d 中 ( 避免更新系统软件包 cronie 时出现问题 ) 。 /etc/cron.d/crontab文件在日期说明后另加一个字段 , 表示将运行作业的用户对于需要每天、每周或每月运行一次的脚本 , 可以直接将其设置为可执行文件 , 并保存在 /etc/cron.
{daily,weekly,monthly} 中相应目录下。这些任务 /etc/anacrontab 配置的系统 anacron 服务运行anacron 是 cron 的集成组件 , 用于更好地管理作业 , 并确保在执行,也就是有一个补漏执行
例如我设置了任务,然后我关机了,过了时间以后,我在开机,这个任务就会被立刻执行
vim /etc/cron.d/file #file任意名称
* * * * * username action
* * * * * root rm -rf /mnt/*
3.定时任务的黑白名单
黑名单:/etc/cron.deny 用户名字出现在里面的不可以使用crontab命令
白名单:/etc/cron.allow这个文件是不存在的,所以使用白名单需要用户自己新建一个文件, 用户出现在里面的可以使用crontab命令
如果cron.deny和cron.allow同时存在,那么优先级at.allow>at.deny,也就是说如果cron.deny和cron.allow里面都有student的话,student用户依旧可以创建定时任务
三、系统中的临时文件
系统中服务在正常运行时会产生临时文件,在系统中 /usr/lib/tmpfiles.d/
下面用一个例子来加深理解,如何清理系统中的临时文件
1.我在/usr/lib/tmpfiles.d/下新建一个文件xupt.conf
配置文件具体的格式为
d /mnt/xupt 777 root root 1min
表示类型为目录 目录路径 权限 所属用户 所属用户组 存在多长时间会被清理
2.运行指令
systemd-tmpfiles.d --create /usr/lib/tmpfiles.d/xupt.conf ##运行完会发现创建了目录
3.然后间隔1分钟在mnt/xupt下创建两个文件
4.运行命令,就会发现存在已经超过一分钟的lei1已经被清理了,而lei2没有被清理
systemd-tmpfiles.d --clean /usr/lib/tmpfiles.d/xupt.conf ##清理了在mnt/xupt下存在超过一分钟的文件