前言
延时与定时任务在实际应用中经常会用到,例如生活中最常见的闹钟的设置。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 查看本文章