一.延时任务:
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命令,文件被删除