at 命令的用法:
at + 某个将来的具体时刻 ##表示将来在某个时刻执行特定的操作at 参数
at -l ##查看延时任务
at -c 数字序号 ##查看当前数字序号对应的延时命令的所执行的文件内容
at -r 数字序号 ##删除当前数字序号对应的延时任务
实验:
首先,在作延时任务时,需要打开两个shell窗口,
一个shell窗口打开监控命令,监控目录/mnt:watch -n 1 'ls -l /mnt'
另一个shell窗口做延时命令:
图 1 所示:date 显示此刻的时间;
at + 10:48 ------->表示在未来10:48执行延时任务,比如我们现在新建文件file1,file2,file3;
at -l --------->显示当前所有延时任务列表;
图 1
当延时任务完成之后,再次查看任务列表之前的延时任务将会消失,如图 2 所示。
图 2
输入 at -r 数字序号(对应途中的7),删除当前序号对应的延时任务
图 3
注:若我们要指定某用户不能执行at命令,如student,编辑用户黑名单vim /etc/at.deny,
直接编写用户名称,编辑内容如下图所示;
当我们切换用户至student,执行现执行不了。
但如果/etc/at.allow白名单存在,系统不读取黑名单内容。(即系统默认除了白名单之外的用户,所有用户都是黑名单)
我们在/etc/at.allow中输入student用户名,wq退出保存,切换至student用户,再次执行at命令,会发现此时是可以执行的。
二、定时任务
方法一:
crontab -u root -l ##查看任务列表
crontab -u root -r ##所有任务删除,删除的是/var/spool/cron/的用户文件
crontab -u root -e ##发起任务
######################################################################
# 发起任务编写命令格式: #
# 分钟 小时 天 月 周 命令(最好用绝对路径) #
# */2 08-17 1,15 3-5 3 /bin/rm -fr /mnt/* #
# #
# 含义:在3-5月的每周三的1号和15号的8点到下午17点每隔2分钟清空/mnt #
######################################################################
操作步骤:(在超级用户root下实验)
(1)打开监控: watch -n 1 'ls -l /mnt'
(2)发起任务:crontab -u root -e
(3)编辑内容:*/2 * * * * /bin/rm -fr /mnt/* ##每天每隔2分钟对/mnt目录进行清空
效果:文件未被改动前(注意时间)
文件改动后:
注:设置用户黑白名单与at命令类似。
编辑用户黑名单的位置:/etc/cron.deny
编辑用户白名单位置:/etc/cron.allow
方法二:
在/etc/cron.d目录下,创建一个文件westos,文件编辑格式为:
* * * * * root /mnt/file (与crontab -e 类似,但需要指定用户)
监控/mnt目录,观察效果(watch -n 1 'ls -l /mnt');
三、临时文件创建与删除
systemd-tmpfiles --creat /usr/lib/tmpfiles.d/* //创建临时文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* //清除临时创建的已存留5s的文件,时间不够的不会有影响
实验:
在/usr/lib/tmpfiles.d下,编辑文件westos.conf,编辑格式:
类型 名称 权限 用户 组 时间 ##对westos目录下新建文件存留时间的限制
d /mnt/westos 1777 root root 30s
监控watch -n 1 'ls -Rl /mnt'
systemd-tmpfiles --creat /usr/lib/tmpfiles.d/* //创建临时文件所在目录
新建/mnt/westos/file
清除systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* ##删除所建的临时文件,但是如果临时文件从创建到现在的存在时间还没有超过所限定的时间,那么这个命令就会在有效时间内失效。