linux之系统定时任务及延时任务

系统定时任务及延时任务
1.在mnt下创建文件touch file{1..9}


在开一个终端监控mnt目录:watch -n 1 ls -l /mnt

--at  +时间       ##哪一个时间执行什么任务
举例:
--at 3:43
at> rm -rf /mnt/*  ##删除mnt目录下的所有文件,crtl+D执行此命令
监控窗口观察到3:43分时,mnt目录下的文件被清除

--at now+1min  ##一分钟后执行任务
举例:
--at now+1min
at>rm -rf /mnt/*  ##删除mnt目录下的所有文件,crtl+D执行此命令
监控窗口观察到8:19分时,mnt目录下的文件被清除

--crtl + D     ##延迟任务开始

--at -l        ##查看任务都有哪些

--at -r  +任务号  ##取消任务

--at -c  +任务号  ##查看指定任务内容

2,定时任务在任意用户都可设定
3,设置黑白名单
--man 5 at.deny (查看黑名单的说明)

创建用户tom与jack
黑名单:
--vim /etc/at.deny  ##用户黑名单,在此名单中的用户不能使用定时任务

白名单:
--touch /etc/at.allow  
--vim /etc/at.allow
用户白名单,创建白名单之后,所有不在白名单的用户,都默认是黑名单,无法使用定时服务,只有在白名单的用户才可以使用定时任务。


注:先将tom用户从黑名单取出,做白名单测试
注:执行的命令成功后会在邮件显示,mail ,可以在这里查看

4,定时任务之crontab命令
--systemctl status crond.service  ##查看crondtab的服务状态

mnt目录下:创建文件


--crontab -u root -e              ##编辑命令执行的内容(默认是root用户执行此命令)

执行上述操作:mnt目录下的文件被删除

监控mnt目录发现文件被清除
--crontab -u root -l              ##查看root用户执行的命令
--crontab -u root -r              ##删除root用户执行的命令
--man 5 crontab                   ##查看编辑执行内容的格式
编辑格式:分钟 小时 天 月 周几


例:
* * * * * rm -rf /mnt/*    ##每月每天每周每小时每分钟执行此命令清除根目录下mnt目录的所有文件
*/2 * * * * rm -rf /mnt/*  ##每月每天每周每小时每二分钟执行一次删除任务
*/2 09,17 * * * rm -rf /mnt/*     ##每月每周每天的九点和17点每两分钟执行一次
*/2 09-17 * * * rm -rf /mnt/*      ##每月每周每天的九点到17点每两分钟执行一次
*/2 09-17 1,15 * * rm -rf /mnt/*  ##每月的1号和15号的九点到17点每两分钟执行一次
*/2 09-17 1,15 * 2 rm -rf /mnt/*  ##每月的1号和15号和每月的周二的九点到17点每两分钟执行一次
*/2 09-17 1,15 7 2 rm -rf /mnt/*  ##每7月的1号和15号和7月的周二的九点到17点每两分钟执行一次


--cat /var/spool/cron/root(命令执行的用户) crontab命令编辑的内容放在此配置文件内

指定student用户的定时任务:

--crontab -u student -e  ##让student用户执行命令
--crontab -u student -l  ##查看student用户执行的命令
--crontab -u student -r  ##删除student用户执行的命令

在root用户下,执行下列命令,就算黑名单里有student crontab还是可以用,因为是root用户给student的权限
黑名单:
--vim /etc/cron.deny    用户黑名单,在此名单中的用户不能使用定时任务命令

白名单:
--touch /etc/cron.allow时每隔两分钟执行此命令清除根目录下mnt目录的所有文件
--vim /etc/cron.allow   用户白名单,除了此名单和root用户,之外都不能使用此定时任务命令


用户白名单,创建白名单之后,所有不在白名单的用户,都默认是黑名单,无法使用定时服务,只有在白名单的用户才可以使用定时任务。
5,系统级定时任务设定(设定多个用户执行cron)
--在/etc/cron.d下边编写脚本
可以在这些文件中看到对应每天/每小时/每月/每周做的动作!
cd /etc/cron.daily ##系统每天所做的
cd /etc/cron.hourly ##系统每小时所做的
cd /etc/cron.monthly ##系统每月所做的
cd /etc/cron.weekly ##系统每周所做的

创建westos脚本
--vim westos
--* * * * *  root   rm -rf /mnt/*   每分钟删除一次root用户下的/mnt下的所有文件

systemctl stop crontab.service  停止crontab服务,用crontab命令设置的定时任务都不生效了
systemctl start crontab.service 开启crontab服务
6.anacron:
检测crontab中的错误,若有8点的定时任务,但在8点前点电脑关机或由于某些原因没有执行,当开机后,anacron 将未执行的定时任务立即执行


7. 临时文件管理:
注:做这个实验前,取消之前定时任务所设定的定时清理根目录,不然影响实验结果。

存在于系统中的临时文件,在超过其限定的清理周期后,会被系统自动删除
cd /usr/lib/tmpfiles.d/   ##以.conf结尾的都是临时文件

注:vim tmp.conf ##可以看到系统清理临时文件的格式

创建一个临时文件,在/usr/lib/tmpfiles.d  :vim westos.conf
在里面写入:d /mnt/westos 777 root root 8s  ##在/mnt/westos创建文件执行以下操作就可每隔八秒删除一次
“注”:上面你内容表示生成临时目录(d),此临时目录路径为/mnt/westos
此目录的权限为777,所有人和所有组都为root,存在于其内的文件清理周期是8s,即建立8s的文件都可以被删除

--systemctl-tmpfiles --create /usr/lib/tmpfiles.d/* ##执行此命令,我们可以看到在/mnt/下生成了westos目录
测试1:
监控命令:watch -n 1 ls -lR /mnt/westos
在westos目录下创建文件:touch file
此时可以通过监控查看到westos里的内容
--systemctl-tmpfiles --clean /usr/lib/tmpfiles.d/*  ##执行此命令,删除临时文件
测试2:
我们先新建/mnt/westos/file1,间隔8s后再新建/mnt/westos/file2
--systemctl-tmpfiles --clean /usr/lib/tmpfiles.d/*  ##执行此命令,删除临时文件
执行此命令只删除8s内创建file1的文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值