【linux】系统延时任务及定时任务

1.系统延时任务

1. at命令的使用

at time          //设定任务执行时间
rm -fr /mnt/*    //任务动作
ctrl+D           //发起任务

在这里插入图片描述
watch -n 1 ls /mnt打开一个监控窗口
原本/mnt目录下有10个文件,在01:04分执行rm -fr /mnt/* 的命令
在这里插入图片描述
时间一到,/mnt目录下的文件被删除。

at now+1min      //延时1分钟
rm -fr /mnt/*    //任务动作
ctrl+D           //发起任务    
这里任务的执行是正点正分,比如01:03:45发起任务,执行是01:04:00

在这里插入图片描述

at -l                 //查看任务列表
at -c 任务号          //查看任务内容
at -r 任务号          //取消任务执行

【注意1】
当任务有输出时,输出会以邮件的形式发送给at任务的发起者

mail -u root   //查看超级用户的邮件
1              //查看第一封邮件
q              //退出

在这里插入图片描述
延时1分钟执行echo hello python在这里插入图片描述
超级用户收到邮件,内容为执行任务的输出结果

> /var/spool/mail/root   //清空邮件

在这里插入图片描述
邮件没清空之前还能看到任务执行的输出结果hello python,清空之后再cat,为空。
2. at任务的黑白名单

/etc/at.deny   //系统中默认存在,在此文件中出现的用户不能执行at

在这里插入图片描述
在黑名单中写下student用户
在这里插入图片描述
切换到student用户,执行at命令,权限受制。

/etc/at.allow  //系统中默认不存在,如果出现该文件,则普通用户不能执行at,只有在名单中出现的用户才可以。同时  /etc/at.deny失效。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. 定时任务

大部分系统管理工作都是通过定期自动执行某个脚本来完成的,而cron功能即可帮助我们定期执行脚本。

systemctl start crond  //开启服务

1. crontab时间表达方式

crontab -u //表示指定某个用户,不加-u选项则为当前用户
crontab -e //表示制定计划任务
crontab -l //表示列出计划任务
crontab -r //表示删除计划任务

2. 发起任务编写命令格式

分 时 日 月 周 命令(最好用绝对路径)
比如:
 *  * * * *    rm -fr /mnt/*          //每分钟执行一次对/mnt目录下文件的删除
*/2 * * * *    rm -fr /mnt/*          //每隔两分钟执行一次
*/2 08-17 1,15 3-5 3 rm -fr /mnt/*  //在3-5月的每周三的1号和15号的8点到17点每隔两分钟执行

方法一:
使用crontab -e来编写任务计划,实际上是使用vim工具打开了crontab的配置文件/var/spool/cron/username文件。(如果用户是root,则打开的是/var/spool/cron/root)打开这个文件使用了vim,所以保存时在命令行模式下输入wq即可。
操作步骤如下:
1)打开监控:watch -n 1 ls -l /mnt
2)发起任务 crontab -u root -e
3)编辑内容为*/2 * * * * rm -fr /mnt/*
在这里插入图片描述任务发起。文件没有被改动前,/mnt目录下还有5个文件
在这里插入图片描述每隔两分钟执行任务,文件被改动后,/mnt目录下无文件。
方法二: 在/etc/cron.d目录下,创建一个文件westos。编辑文件,内容为*/2 * * * * root rm -fr /mnt/*
与crontab -e类似,但要指定用户
方法三:
echo "*/2 * * * * root rm -fr /mnt/* >/etc/cron.d/username

3. 临时文件创建与删除

系统中服务在正常运行时会产生临时文件,存放目录是/usr/lib/tmpfiles.d,系统临时文件的配置文件是/usr/lib/tmpfiles.d/.conf*

systemd-tmpfiles --create /usr/lib/tmpfiles.d/*  //创建临时文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* //删除临时创建的已存留5s的文件,时间不够的没有影响

下面我们自己实现一下,如何清理临时文件。

cd /usr/lib/tmpfiles.d  
//这个目录存放了系统产生的临时文件以及这些临时文件的配置文件
//name.conf都是配置文件
vim potizo.conf   //我们写一个处理临时文件potizo的配置文件

编辑内容如下:
在这里插入图片描述
其中d表示文件类型,/mnt/potizo是对哪个文件执行,777表示对文件授予权限为满,两个root分别为属主属组,表示以root用户root组的身份执行,5s表示时间。这一句配置内容意思是在5s后删除/mnt/potizo目录下的文件。
【注意】在自己创建临时文件的配置文件时一定要以.conf结尾。
操作步骤如下:
1)先在/usr/lib/tmpfiles.d目录下vim potizo.conf,并编辑内容

在这里插入图片描述
2)切换到/mnt下执行临时文件的配置
在这里插入图片描述
3)ls查看要执行的目录
在这里插入图片描述
4)ll查看文件权限开头的d表示配置成功
在这里插入图片描述
5)切换到potizo下,创建文件,并ll查看是否创建成功
在这里插入图片描述
6)执行清理临时文件的命令
7)ls查看创建的文件是否清理成功,是否按照规定时间才开始执行清理
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/potizo/article/details/83678529