一、延时任务
cron是一个linux下的定时执行工具(相当于windows下的scheduled task),可以在无需人工干预的情况下定时地运行任务task。
cron服务提供crontab命令来设定cron服务的。
1.延时任务的设置
在做实验的时候我们打开两台终端,一台做监控观察,一台输入命令
watch -n 1 ls -R /mnt/ 为监控命令 这条命令会每秒查看一次/mnt
我们用到的延时命令为at
我们先做一些简单的实验 ,在一定的时间做一些事情。
输入命令at 21:51
at> touch /mnt/file{1..10}
at><EOT> CTRL+D 退出保存
at命令的用法
at [参数] 任务号 (任务号为执行at命令时显示最后一行job 后的数字)
at -l 查看任务列表
at -c 任务号 查看任务内容
at -r 任务号 取消任务执行
当任务有输出的时候,输出会以邮件的形式发送给at任务的发起者
mail -u root 查看超级用户邮件
在& 后面输入数字 1 时, 表示查看第一封邮件
后面输入 q 时 ,表示退出
> /var/spool/mail/root 表示清空邮件
2.at任务的黑白名单
/etc/at.deny 系统中的黑名单,在系统中默认存在,在此文件中出现的用户不能执行at命令
如果打开vim / etc/at.deny 在其中写入普通用户的用户名,那么该用户将不能使用at命令
/etc/at.allow 白名单 系统中默认不存在的,需要自己建立,当此文件出现后,黑名单etc/at.deny自动失效(除了root用户)。
并且所有普通用户都不能执行at命令,只有在白名单/etc/at.allow出现的普通用户才能执行at命令。
注意:不管黑白名单是否出现root用户都可执行at命令
二、系统的定时任务
在做实验前,要先保证crond服务处于active状态
1.定时任务的临时设定
在定时任务我们用到的是crontab命令 crontab表示时间的方式
crontab -e 编辑当前用户的定时任务
crontab -r 取消当前用户的所有定时任务
crontab -l 查看当前用户的所有定时任务
crontab -u username -e 编辑username的定时任务
crontab -u username -r 取消username的所有定时任务
crontab -u username -l 查看username的所有定时任务
这里的* * * * * 表示的是分钟、小时、日期、月份、星期
除了数字还有几个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字
例子:
0 */2 * * * 表示每两个小时
0 23-7/2,8 * * * 晚上11点到早上8点之间每两个小时,早上八点
0 4 1 jan * 一月一号的4点
45 4 1,10,22 * * 表示每月1、10、22日的4 : 45
在定时任务里也有黑白名单的存在,定时任务的黑白名单和延时任务的黑白名单属性相同,作用相同
2. 定时任务的永久设定
/var/spool/cron/username 编辑该文件,永久定时任务,实质所有定时任务存储在该文件中
ls /var/spool/cron 查看当前定时任务的发起人
若删除/var/spool/cron/username,则删除当前username的定时任务
cron.d/ 用户自定义文件 cron.daily/ 系统每天执行一次
cron.hourly/ 系统每小时执行一次 cron.monthly/ 系统每月执行一次
cron.weekly/ 系统每周执行一次
三、临时文件的管理
/usr/lib/tmpfiles.d/xxx.conf 系统临时文件的配置
建立一个文件为westos.conf
d /mnt/westos 1777 root root 5s
文件类型 文件名称 文件权限 所有人 所有组 文件存在时间
systemd-tmpfiles --create /usr/lib/tmpfiles.d/* 执行建立的配置文件,监控的westos.conf
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/* 清除临时文件
创建的文件在存在的时间 5s 内不能被删除,只有存在 5s 以上的时间才能被清除。