Linux中延时与定时任务常见问题


前言

延时与定时任务在实际应用中经常会用到,例如生活中最常见的闹钟的设置。Linux系统中同样有这样的需求,我们需要一种办法来实现,以达到延时或者定时的目的

一、系统延时任务设定实例

[root@localhost ~]# at 23:37 ##设定任务执行时间
at> rm -fr /mnt/westos             ##任务动作
at> <EOT> << CTRL +D         ##用 ctrl+D 发起任务
[root@localhost ~]# at now+1min   ##延时 1 分钟
at> rm -fr /mnt/westos
at> <EOT>

常用操作:

at -l 查看任务列表
at -c 任务号 查看任务内容
at -r 任务号 取消指定任务执行

注意:当任务有输出时,输出会以邮件的型是发送给 at 任务的发起者
例如使用date命令查看时间时,当通过at指定date任务,该任务的输出将会以邮件的形式发送给该任务的发起者,而不会直接显示,需要查看相关邮件来获得其输出。另外,如果需要查看邮件,则需要先安装mailx和postfix服务,并开启postfix服务。具体查看方式如下表:

mail -u root 查看超级用户邮件
1 查看第一封邮件
q 退出
> /var/spool/mail/root 清空邮件

二、at任务黑白名单

/etc/at.deny ##系统中默认存在,在此文件中出现的用户不能执行at
/etc/at.allow ##系统中默认不存在,当文件出现,普通用户不能执行at,只有在名单中的用户可以,并且/etc/at.deny 失效

注意:at.deny文件在系统中是默认存在的,只是初始状态下为空,即没有指定哪些用户不能使用at,如果将整个文件删除,将会导致用户使用at时产生权限错误。

三、系统定时任务

用户级设置方法:

服务(crond.service) 当程序开启时定时任务生效
crontab -e -u -e表示创建crontab任务,-u表示指定用户
crontab -l -u -l表示查看指定crontab任务
crontab -r -u -r表示取消crontab任务

注意:上述操作所编辑的文件相当于在/var/spool/cron/中,可以在上述操作完成后在该目录下查看此目录中的文件内容,发现和刚才通过指令编辑的内容相同。
系统级设置方法(文件方式设定定时任务):

vim /etc/cron.d/file
(* * * * * username action)
* * * * * root rm -fr /mnt/xx  #设定所有时间删除/mnt下的指定内容

注意:采用系统级设置时,使用crontab -l无法查看系统级的crontab任务

四、系统中临时文件的管理方式

cd /usr/lib/tmpfiles.d/   #临时文件存储路径
vim westos.conf           #编辑文件,创建任务
d /mnt/westos 777 root root 8s
systemd-tmpfiles --create /usr/lib/tmpfiles.d/xx  #创建为临时文件
systemd-tmpfiles --clean /usr/lib/tmpfiles.d/xx   #清除临时文件

注意:设置完临时文件的存在周期后在该周期内无法用systemd-tmpfiles --clean命令清楚该文件

五、具体操作

at黑白名单:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
crontab用户级与系统级任务创建:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
系统临时文件管理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

扫描二维码关注公众号,回复: 12438853 查看本文章

猜你喜欢

转载自blog.csdn.net/nk298120/article/details/109617852