Linux系统定时任务及延时任务

一.延时任务:

1.at    命令

at  命令可以指定某一任务在将来的特定时间运行。

at  时间     延时任务
ctrl+d         任务发起
at -l            查看任务
at -c           查看任务内容
at -r            取消任务
测试:
先在/mnt/下创建10个文件,然后输入watch -n 1 ls -l /mnt/  监控命令

重新打开一个终端执行以下操作:
at now+2min          延时2分钟       
at> rm-fr /mnt/*       执行的内容

ctrl+d                       发起任务
at -l                          查看当前延时任务


at -c  任务号           查看任务内容

时间到,文件被删除


at -r  任务号                        取消任务,取消任务后,at -l查看不到该任务

2.延时任务黑白名单:
/etc/at.deny    用户黑名单,系统本身存在的文件,在此黑名单下的用户不可以执行延时任务
/etc/at.allow   用户白名单,系统本身不存在此文件,需要创建,当此文件被创建后,默认所有用户都是黑名单,只有在此文件下的用户才能执行延时任务,且如果用户白名单与用户黑名单同时存在一个用户,用户黑名单失效。
root用户对以上两个文件免疫。
测试:先在liming下创建延时任务,可以创建,然后把liming加入到用户黑名单,再用liming创建延时任务,不可以创建。然后touch /etc/at.allow  创建延时任务白名单,用其他用户(除了root)尝试创建延时任务,不可以创建,然后在白名单下添加liming任务,用liming创建延时任务,可以创建。黑名单也有liming,但是黑名单liming已失效

二.定时任务

1.定时任务:

crontab   定时任务是永久的,要写到文件里
systemctl status crond.service   ,查看定时任务属性


crontab -e   编辑定时任务,如果不加用户,则表示root用户,man  5  crontab查看文件书写格式
*     *     *     *     *      rm  -rf   /mnt/*   每一天的每一分钟都删除/mnt/下的文件和目录

*/2    *    *    *    *    每一天的每两分钟
*/2    09,17     *     *     *  每个月的17点和9点每两分钟
*/2    09-17     *     *     *  每个月的9点到17点每两分钟
*/2    09-17     *     *     2  每个月的周二的9点到17点每两分钟
*/2    09-17     1,15     *     2 每个月的1号和15号以及周二的9点到17点每两分钟
*/2    09-17     1,15     7    2 7月的1号和15号以及周二的9点到17点每两分钟

crontab -u root -l    查看root的定时任务
crontab -u liming -l  查看liming的定时任务,
crontab -u root -r    删除root的定时任务

crontab -u liming -e   编辑liming的定时任务
crontab -u liming -l   查看liming的定时任务
crontab -u liming -r   删除liming的定时任务

测试:

2.定时任务黑白名单

  /etc/cron.deny    黑名单,系统本身存在的文件,在此黑名单下的用户不可以执行延时任务
  /etc/cron.allow   白名单,系统本身不存在此文件,需要创建,当此文件被创建后,默认所有用户都是黑名单,只有在此文件下的用户才能执行延时任务,且如果用户白名单与用户黑名单同时存在一个用户,用户黑名单失效。
root用户对以上两个文件免疫。
测试:先切换到liming用户,然后crontab -e,可以进入编辑文件。

切换到root将liming添加到黑名单(vim /etc/cron.deny)

切换到liming ,crontab -e 不可以进入编辑文件。

切换到root创建白名单(touch /etc/cron.allow),默认全用户为黑,除了root外。然后将liming添加到白名单,(vim /etc/cron.allow),切换到liming,crontab -e 可以进入编辑文件。黑名单中的liming失效。

但是即使liming不在白名单下,也可以在root下crontab -u liming -e   进入编辑文件,因为root用户操作,不受以上两个文件的限制。

3.系统级定时任务

属于系统的定时任务通常保存在/etc/crontab文件中而不是使用crontab -e 编辑保存在个人文件中。更好的做法是使用文本编辑器创建crontab文件并保存到/etc/cron.d中(避免更新系统软件包cronie时出现问题)。/etc/cron.d/crontab文件在日期说明后另加一个字段,表示将运行作业的用户。对于需要每天 每周或每月运行一次的脚本,可以直接将其设置为可执行文件,并保存在/etc/cron{daily,weekly,monthly}中相应目录下。

在/etc/cron.d/目录下,可以创建系统级定时任务文件,文件格式为:

*         *         *         *         *         root      rm  rf  /mnt/*

之所以在/etc/cron.d/下创建的文件可以定时,是因为开启了crond服务,如果关掉服务,就不会执行定时任务
 1.cd /etc/cron.d
 2.vim westos  创建文件并写入  * * * * *   root   rm -rf /mnt/*
 3.touch /mnt/file{1..3}


如果我们的Linux主机是24全天全年的处于开机状态,我们只需要atd与crond这两个服务即可,如果我们的服务器并非24小时无间断的启动,那么我们就需要anacron的帮助了。

anacron并不能取代cron去运行某项任务,而是以天为单位或者是在启动后立刻进行anacron的动作,它会去侦测停机期间应该进行但是并没有进行的crontab任务,并将该任务运行一遍后,anacron就会自动停止了。

4.系统临时文件建立

文件都是需要空间的,都是需要占用内存的,如果我们想要定期清除一些不需要的文件,我们就需要创建一个临时文件

 1.cd /usr/lib/tmpfiles.d/ --> ls   此目录下都是系统临时文件,随便打开一个,看格式如何写,vim tmp.conf
 2.在tmpfiles.d目录下创建一个临时文件,vim westos.conf,编辑如下:
  d /mnt/westos 777 root root 8s   此命令的意思是每8秒清除一次/mnt/westos/下的文件。
 3.systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
 4.systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*  当文件超过8秒后,执行此命令,文件会被删除,若没有超过8秒,那么文件不会被删除。
监控命令: watch -n 1 ls -lR /mnt/

超过8秒执行clean命令,文件被删除

猜你喜欢

转载自blog.csdn.net/lm236236/article/details/83756528