1 at定时任务调度
1.1 基本介绍
- at命令是一次性定时计划任务,at 的守护进程atd 会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
- 在使用at命令的时候,一定要保证 atd 进程的启动﹐可以使用相关指令来查看
ps -ef | grep atd//可以检测atd是否在运行
这里发现atd进程并没有启动,图中的一条是检测上面的ps -ef | grep atd这条命令,我查了一下ubuntu怎么启动atd进程,安装一下就行
- 画一个示意图
atd每隔60s就会对队列里的job进行一次检测,有job设定的执行时间是现在的话,atd就会执行它,并把它移出队列
1.2 at命令格式
at [选项] [时间]
Ctrl+D结束at命令的输入,输出两次
1.3 at命令选项
atq为查询,atrm为删除
1.4 at时间定义
at指定时间的方法:
以下方法记住4就够用了,多的话可以再记个1,其余的仅作了解即可
- 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如:04:00
- 使用midnight(深夜),noon (中午) ,teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
- 采用12小时计时制,即在时间后面加上AM (上午)或PM(下午)来说明是上午还是下午。例如:12pm(即下午12点)
- 指定命令执行的具体日期,指定格式为month day(月日)或mm/ddyy(月/日/年)或dd.mm.yy (日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
- 使用相对计时法。指定格式为: now + count time-units ,now就是当前时间, time-units 是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,几天,几小时。例如: now + 5 minutes(5分钟以后执行任务)
- 直接使用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 删除.