linux-系统延迟及定时机制
at
1.at命令的基本用法
at xx:xx 回车写入执行的任务(或者直接用now+1min表示一秒钟后执行)
now+1min的操作
at -l 列出延迟任务的id
at -r -d 删除此id的任务 先列出延迟任务 然后根据id进行删除
at -c 任务id 查看此id的延迟任务的执行动作
at -f 文件名字 用文件内记录的命令作为延迟任务的执行命令(此处将命令写入了westos中)
at -m now+1min可以让输出的命令产生邮件(最好在虚拟机中进行实验 真机邮件有时出不来产生文件就是有输出的命令 删除就是不产生命令的输出)
at -M now+1min可以让有输出的命令不产生邮件
2.at的黑白名单
默认情况下 系统是存在黑名单的 这个名单的路径为/etc/at.deny(用户黑名单默认为空 但是当白名单不存在的时候生效)
这里将普通用户kiosk写入黑名单
切换到kiosk普通用户执行at命令时发现被禁止了 效果如下图
用户白名单(默认下系统是不存在白名单的/etc/at.allow需要自己建立出来 白名单建立出来后系统中除过root和名单中出现的用户 其他的用户均不能执行at命令
student加入白名单后可以执行at操作
但是如图白名单中没有出现的另外一个普通用户则执行at任务失败
3.cron定时机制
cron这个程序是由cron.service提供的 写入程序的时间和事件是永久保存的
cron设定方式如下
先看一下cron.service的服务状态 保证是开启状态
crontab -e -u(用户名称可以不写)
分钟 小时天 月 周 事件
06 06 ** * rm -fr /mnt/* 每天的6点06分删除/mnt下的所有内容
06 061,15 * * 每月一号和十五号的6点06删除/mnt下的所有内容
06 061-15 * * 每月的一号到十五号的6点06删除/mnt下的所有内容
06 061,15 3 * 3月一号和十五号的6点06删除/mnt下的所有内容
06 061-15 3 * 3月的一号到十五号的6点06删除/mnt下的所有内容
06 061,15 3 3 3月一号和十五号和三月的每周三的6点06删除/mnt下的所有内容
06 06-17* * * 每天的早上六点到下午五点的06分删除/mnt下的所有内容
*/30 06-17 * * 1-5 周一到周五的早上六点到下午五点每三十分钟删除/mnt下的所有内容
先在crontab -e中写入定时命令(这里写入的命令为每一分钟再/annie这个目录下建立file{1..10}这十个文件
然后每两分钟/annie全部删除一次 监控命令打开可以进行监控
watch -n 1 ls -l /annie 每秒监控一下/annie这个目录下的文件
cron的黑名单(etc/cron.deny) 默认情况下系统只存在黑名单 当白名单建立黑名单失效 黑名单默认为空 在黑名单中的用户不能执行crontab
在这里把student加入了黑名单 切换到student执行crontab 发现被禁止
接下来我们建立白名单(除root和其他写入用户 其他的所有用户则无法再执行crontab同时有了黑名单则白名单失效)
这里我们将annie用户写入了白名单 则切换到这个用户可以执行crontab student用户没有写入白名单中则无法使用crontab服务
2.文件方式定义crontab
vim /var/spool/cron/用户名称 从某个用户执行cron文件名称必须和用户名称一致(假如root用户执行了额crontab -e 写入了东西就会生成/var/spool/cron/root 这个文件 同理 其他的用户也是这样)
分时 天 月 周 执行的动作
vim /etc/cron.d/文件 设定都多个用户身份执行cron 分 时 天 月 周 执行的动作
在这个文件中写入如下 分别用root和student的身份在/annie下建立文件 普通用户没有权限 记得把权限给上
监视命令打开 效果如下 则用两个用户分别创建成功
3.同时也可以用脚本写入以上动作
sh对脚本进行执行 可以看到建立了一个文件/etc/cron..d/annie 写入的内容和动作写入的一致
对其进行监控可以看出脚本中的定时机制成功 结果如下图所示
4.系统临时文件的创建及删除管理
/usr/lib/tmpfiles.d/下可以看到很多文件的配置文件
我们建立一个westos.conf并且写入最后为 10秒的临时文件存放时间
执行--creat 可以看到/riven下又建立了westos目录
执行touch /riven/westos/file{1..10}可以看到westos下建立了十个文件
之后执行--clean清除 发现文件无法马上被清除掉 临时文件可以存在十秒 十秒过后再执行可以看到/riven/westos/的file被清除掉
阅剑知其主