【Linux】定时任务调度——at任务调度

193 阅读3分钟

1 at定时任务调度

1.1 基本介绍

  1. at命令是一次性定时计划任务,at 的守护进程atd 会以后台模式运行,检查作业队列来运行。
  2. 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
  3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
  4. 在使用at命令的时候,一定要保证 atd 进程的启动﹐可以使用相关指令来查看
ps -ef | grep atd//可以检测atd是否在运行

在这里插入图片描述

这里发现atd进程并没有启动,图中的一条是检测上面的ps -ef | grep atd这条命令,我查了一下ubuntu怎么启动atd进程,安装一下就行

在这里插入图片描述

  1. 画一个示意图

在这里插入图片描述

atd每隔60s就会对队列里的job进行一次检测,有job设定的执行时间是现在的话,atd就会执行它,并把它移出队列

1.2 at命令格式

at [选项] [时间]

Ctrl+D结束at命令的输入,输出两次

1.3 at命令选项

在这里插入图片描述

atq为查询,atrm为删除

1.4 at时间定义

at指定时间的方法:

以下方法记住4就够用了,多的话可以再记个1,其余的仅作了解即可

  1. 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如:04:00
  2. 使用midnight(深夜),noon (中午) ,teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
  3. 采用12小时计时制,即在时间后面加上AM (上午)或PM(下午)来说明是上午还是下午。例如:12pm(即下午12点)
  4. 指定命令执行的具体日期,指定格式为month day(月日)或mm/ddyy(月/日/年)或dd.mm.yy (日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
  5. 使用相对计时法。指定格式为: now + count time-units ,now就是当前时间, time-units 是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。例如: now + 5 minutes(5分钟以后执行任务)
  6. 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

1.5 应用实例

案例1:2天后的下午5点执行/bin/ls /home

在第3行输入完/bin/ls /home命令后按两次ctrl+D,就会显示下图中第四行的内容,表明已经添加成功

在这里插入图片描述

如果在第3行的输入中,不小心输错的了话,会发现backspace没办法消除,这时应该按ctrl+backspace

案例2:atq命令来查看系统中没有执行的工作任务

输入atq可以查看相关信息,如下图:

在这里插入图片描述

案例3:明天17点钟,输出时间到指定文件内比如/root/date100.log

在这里插入图片描述

案例4:删除已经设置的任务, atrm编号

atrm 4 //表示将job队列,编号为4的job 删除.