Linux下的定时任务及延时任务

系统延时任务的设定

at命令
at 命令可以指定某一任务在将来的特定时间运行。该任务可能是一次备份、对系统的检查或者特定时间发送的通知。那些需要花费很长时间才可完成的任务正适合 at 命令。仅需使用 at 命令将任务设置为在一分钟或两分钟之后运行。然后你就可以安全注销 ,因为该任务会在与 shell 会话断开连接的情况下运行。

at 命令必须指定任务应运行的时间。该指定可以是具体时间或日期( 例如星期一, 10:00pm 或 7 月 15 日 ) 。也可以是当前时间的相对时间 ( 现在时间加上 5 分钟 , 现在时间加上 3 天或 4:00pm 加上1 周 ) 通过添加其他选项, 可以在任务完成时发送邮件 ( -m ), 或者从文件中读取任务 ( -f 文件 ),而无需通过标准输入进行。


at命令使用方法:在键入 at 命令行之后,按 Enter 并继续键入任务中包含的其他命令。任务可由多个命令组成。在完成键入要运行的命令时, 在单独出现的一行中按 Ctrl+D完成任务。

操作示例
首先用watch命令实时监控/mnt 目录下文件的变化:

watch -n 1 ls /mnt

然后再打开一个shell用at命令在/mnt目录下延时创建文件,如下:
在这里插入图片描述
然后到了指定时间之后,就会执行创建文件命令了,如下:
在这里插入图片描述
at命令常用参数
at命令还有几个常用的参数,可以对延时任务进行操作,下面是几个at命令常用到的参数:
(1). at -l
功能:列出当前所有的延时任务
操作示例:
在这里插入图片描述
最前面的2代表任务的编号,可以看到当前有1个延时任务。

(2). at -c
功能:该命令后面加任务编号,可以查看详细的任务内容
操作示例:
在这里插入图片描述
然后就会出现详细的任务内容:
在这里插入图片描述
(3). at -r
功能:该命令后面加任务编号,可以删除指定编号的延时任务
操作示例:
在这里插入图片描述
可以看到之前是有一个编号为2的延时任务的,在执行了at -r 2命令之后,就把该延时任务删除掉了。

延时任务的黑白名单设定
(1). 延时任务黑名单
/etc/at.deny 文件是专门存放at命令的黑名单的,只要在文件中存在的用户就没有权限使用at命令。
操作示例:
新建几个用户来做此实验:
在这里插入图片描述
在黑名单添加用户之前,这几个用户都有权限使用at:
在这里插入图片描述
在黑名单中添加一个用户,然后在该用户下使用at命令时,该用户将没有权限:
在这里插入图片描述
(2). 延时任务白名单
/etc/at.allow 文件时专门存放at命令的白名单的,但是系统中没有该文件,需要先创建该文件,并且还需要注意的是,当白名单和黑名单中同时存在同一个用户时,这时黑名单将不再生效。
操作示例:
首先创建/etc/at.allow 文件,然后在文件中添加用户:
在这里插入图片描述
然后只有在白名单中的用户有权限使用at命令,不在名单中的用户(除了root用户)将被禁止使用at命令:
在这里插入图片描述
可以看到在名单之外的用户不能使用at命令。


系统的定时任务

系统中有一个crond服务,它是专门用来管理定时任务的服务:

在这里插入图片描述
设备管理必须按设定的计划定期重复运行的程序。后台 crond每分钟唤醒一次,以运行计划的任何任务用户使用 crontab命令计划个人任务。系统管理员可以在系统范围配置文件中设置任务,单个用户使用称为 crontab ( cron 表 ) 的文本文件登记任务。

命令:
crontab -e -u 用户名
这个命令是对于某一个用户制定定时任务的,当执行该命令之后就会进入一个vim文本编辑器,用来编辑定时任务的。
编辑定时任务时,前面的字段是用来说明时间的,后面的字段是定时任务要执行的命令。
时间有5位, * * * * * 表示每隔一分钟执行一次,那么每一位的含义从前到后分别如下表:

每一位的含义允许值范围
分钟0-59
小时0-23
每月的第几天1-31
月份1-12(或者月份的英文缩写)
每周的第几天0-7(0和7都表示周日,或者使用星期英文)

下面我们就看几个时间表示的示例:

cron语法命令何时运行
05 * * * *每小时整点过5分钟
05 02 * * *每天的2:05am
30 08 01 * *每月第一天的8:30am
00 07 25 12 *12月25日7:00am
30 16 * * 5每个星期五的4:30pm
*/5 * * * *每5分钟
*/10 9-17 1,15 * *在每月第一天和第十五天的9:00am至5:00pm之间
(在5:00pm不会运行,最后一次运行是在4:50pm)每隔10分钟
0 0 1 jan 01月1日午夜和1月的每个周日(不仅是1月1日所在的星期日)

在编辑器中写入下面内容,表示每隔1分钟,就会清空一次/mnt目录:
在这里插入图片描述
wq保存退出,可以查看/var/spool/cron/目录下的root文件,里面存放的是root用户的定时任务,如下:
在这里插入图片描述
命令的其它常用参数
(1). crontab -l -u 用户名
该命令是用来查看制定用户的定时任务的,如下:
在这里插入图片描述
(2). crontab -r -u 用户名
该命令是用来删除制定用户的定时任务的,如下:
在这里插入图片描述
root用户的定时任务没有了,那么/var/spool/cron/目录下也就没有root文件了:
在这里插入图片描述


系统中的临时文件

系统中服务在正常运行时会产生临时文件,在系统中 /usr/lib/tmpfiles.d/目录下会标实服务的临时文件存放位置,如下:
在这里插入图片描述
我们就打开一个 tmp.conf ,以它为例,看一下记录临时文件的格式是什么吧:
在这里插入图片描述
接下来我们也自己建立一个 .conf 文件,然后在文件中按照上面的格式编辑一个记录临时文件的目录,如下先建立一个westos.conf,并编辑:
在这里插入图片描述
编辑如下内容:
在这里插入图片描述
下面学两个命令:
控制系统中的临时文件命令

(1). 创建
systemd-tmpfiles --create /usr/lib/tmpfiles.d/*
通过执行上面的命令,就会创建存放临时文件的目录。

(2). 删除
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/*
通过执行这条命令就会把超过生命周期的临时文件清除掉,注意:没有超过生命周期的临时文件就不会被清除掉。

再打开一个shell,通过watch 命令实时监控 /mnt 目录以及 此目录下的目录中的变化:

watch -n 1 ls -lR /mnt/

执行创建存放临时文件的目录的命令:
在这里插入图片描述
在 /mnt/westos/ 中建立一个临时文件,注意右上角的创建的时间:
在这里插入图片描述
我们设定的生命周期为30s,那么在30s内尝试清除临时文件:
在这里插入图片描述
可以发现文件并不会被清除掉,但是在30s之后执行清除命令就会把临时文件清楚掉:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值