1.16 Linux下的系统定时任务和延迟任务

延迟任务

用户级的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 邮件服务
mail 邮件查看工具

在这里插入图片描述在这里插入图片描述

#设定延迟任务
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分钟。
                   //在这两小时的第二个小时什么也不干

在这里插入图片描述在这里插入图片描述在这里插入图片描述
Q23 */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的链接

猜你喜欢

转载自blog.csdn.net/weixin_47133613/article/details/113414823