linux下的计划任务——只执行一次的定时任务
linux下的定时任务分为两大类:只执行一次的定时任务,周期性执行的定时任务。
atd服务
只执行一次的计划任务,我们是通过at命令来完成的,想要执行at命令则需要先开启atd服务。查看atd服务的运行状况及开启atd服务的命令如下:
# 查看atd服务状况 # systemctl status atd # 开启atd服务 # systemctl start atd
at权限管理
当使用at来产生新的任务时,该任务就会以文本文件形式被放到/var/spool/at目录下。
# ll /var/spool/at total 8 -rwx------ 1 root root 2890 Nov 7 16:30 a0000201981b23 <===== at产生的文件 drwx------ 2 daemon daemon 4096 Nov 7 16:27 spool
对于at的权限管理,系统有两个专门的文件来指定。这两个文件,其实就和我们理解的黑白名单一样。这两个文件分别是/etc/at.deny(黑名单)、/etc/at.allow(白名单)。系统默认的at.deny的内容为空,而对于/etc/at.allow系统默认是不存在的。如果这两个文件都不存在,则只有root用户可以使用at命令。
at命令详解
我们来看看如何使用at这个命令。
设置计划任务
使用at命令设置计划任务 at [-m] 时间,常用的时间格式——HH:MM YYYY-MM-DD,此外还可以使用英文的now +1 minutes类似形式设置。
# at 17:00 2020-11-11 at> date >> /root/at.txt at> <=== 这里输入ctrl+d来结束 job 3 at Wed Nov 11 17:00:00 2020 # at now +5 minutes at> date >> /root/at.txt at> job 4 at Sat Nov 7 17:01:00 2020
查看计划任务
使用-l选项可查看计划任务,如果想看具体的命令可以使用-c选项。除此之外,还可以使用atq命令来查看。
# at -l 6 Sat Nov 7 17:13:00 2020 a root 3 Wed Nov 11 17:00:00 2020 a root # atq 6 Sat Nov 7 17:13:00 2020 a root 3 Wed Nov 11 17:00:00 2020 a root
移除计划任务
还未执行的计划任务,可以通过at -d或atrm来删除。
# at -d 3 # atrm 6
使用at来生成计划任务还有一个好处就是,可以完成脱机管理工作。
评论 (0)