延迟任务
用户级的at
#监控命令
watch -n 1 'ls -l /mnt/'
#设定延迟任务
at 17:31
warning: commands will be executed using /bin/sh
at> touch /mnt/file{1..5}
at> <EOT>
job 2 at Fri Jan 29 17:31:00 2021 a root
#【ctrl+D】任务发起
at命令的参数 | 说明 |
---|---|
-e | 编辑任务 |
-l | 列出任务 |
-c | 查看任务内容 |
-r | 删除任务 |
at命令的输出:邮件形式
#安装并开启邮件服务
dnf install postfix.x86_64 mail.x86_64
systemctl enable --now postfix
软件 | 说明 |
---|---|
postfix | 邮件服务 |
邮件查看工具 |
#设定延迟任务
at now+1min
warning: commands will be executed using /bin/sh
at> echo hello linux
at> <EOT>
job 6 at Fri Jan 29 18:05:00 2021
#【ctrl+D】任务发起
Q:echo的输出在哪里?
A:at以邮件的形式发起
#查看邮件
mail
#删除邮件:delete 1
#help查看命令帮助
注意:硬件时间和系统时间不符,会出现问题
at命令的黑白名单
默认系统中的用户都可以执行at命令:限制at命令
at命令的黑名单:/etc/at.deny
at命令的白名单:/etc/at.allow
当白名单不存在时,查看黑名单
当白名单存在时,只查看白名单
#deny黑名单
ls -l /etc/at.deny
#allow白名单
ls -l /etc/at.allow
编写黑名单,写进去的用户无法执行at命令
vim /etc/at.deny
#键入:yao
创建白名单
touch /etc/at.allow
白名单创建之后,系统中所有普通用户不能执行at命令这是因为。此时的白名单为空
只有在白名单中的用户可以执行at命令
编写白名单
将运行的用户写到白名单中
Q:那白名单和黑名单都有同一个人呢?
A:不会出现这样的情况。白名单出现之后,黑名单不会被系统检测
定时任务
用户级的crontab
定时任务:规定时间内(时间点)完成的任务
crond.service:系统启动后,服务自动启动
crontab的参数 | 说明 |
---|---|
-e | 编辑定时任务 |
-l | 列出定时任务 |
-r | 删除定时任务 |
从左到右依次是分钟,小时,日,月,周
min hour day mouth week
1,2 //1和2
1-5 //1到5
1-5/2 //1min到5min的每2min执行一次
*/2 09-17 3,5 1 5 //1月的3号和5号,早上9点到下午5点,每隔2min执行一次。1月的每个周五,早上的9点到下午的5点每隔2min执行一次
*/2 09-17 * * 5 //每个星期五的早上9点到下午5点,每隔2min执行一次
1 * * * * //每小时第一分钟
2 * * * * //每小时第二分钟
*/* //每小时设定
* */2 * * * //每隔2小时
* * * * * //每分钟清理一次
01 */2 * * * //每天的每隔两小时做一次
*/2 */2 * * * //每天的每两个小时的每2min执行一次(360次)
*/2 */2 * * * //1点做30次,2点不做,3点做30次
//每隔两小时,然后在这两小时里的第一个小时每隔2分钟。
//在这两小时的第二个小时什么也不干
Q:23 */2 * * *
假如现在设定这个时间,*/2 是从写的时候(当前)算起,还是,从每天0点开始算起?
A:从现在,当前开始往下循环。现在是什么时间就从什么时间开始。
crontab命令的黑白名单
注意:黑白名单没有优先级。默认白名单/etc/cron.allow不存在
编辑黑名单
vim /etc/cron.deny
#写入禁止的用户:yao
创建白名单
touch /etc/cron.allow
此时所有用户都不能执行crontab -e,因为所有用户都不在白名单中
编辑白名单
vim /etc/cron.allow
#写入允许的用户:yao
不在白名单中的westos用户,无法执行crontab -e
系统级的crontab
cron目录 | 说明 |
---|---|
/etc/cron.d/ | 系统级 |
/etc/cron.daily/ | 每天 |
/etc/cron.hourly/ | 每小时 |
/etc/cron.mothly/ | 每月 |
/etc/cron.weekly/ | 每周 |
系统级的crontab在/etc/cron.d目录中
vim /etc/cron.d/westos
#以root用户在/mnt下创建文件
* * * * * root touch /mnt/file{1..5}
以上是系统级的crontab,使用用户级的crontab -l,查看不到
对临时文件的管理
crontab一般清理临时文件
系统中的临时文件删除,会报错
临时文件在/tmp中
systemd-tmpfiles --help
#临时文件建立的策略
systemd-tmpfiles --cat-config
#模板
cat tmp.conf
vim /lib/tmpfiles.d/westos.conf
#内容:d /mnt/westos 1777 root root 5s
#d:文件类型是目录
#/mnt/westos:文件名称
#1777:文件权限
#root:文件用户
#root:文件用户组
#5s:文件生命周期
手动生效
#创建
systemd-tmpfiles --create /lib/tmpfiles.d/westos.conf
#清除
#在该目录中创建一个file
#生命周期到了,才可以清理
touch /mnt/westos/file
systemd-tmpfiles --clean /lib/tmpfiles.d/westos.conf
Q1:–clean只删除目录westos里面的内容吗?
A1:取决于你命令后跟了什么策略文件
Q2:create是把.conf中写的文件变成临时文件吗?
A2:文件还是正常文件 ,不过是加了个生命周期
无关:/lib是/usr/lib的链接