Linux系统下at任务调度机制
-
基本介绍
- at命令是一次性定时计划任务,at 的守护进程 atd 会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd 守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。
- 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指今来查看(
ps -ef | grep atd
,可以检测 atd 是否在运行) - 示意图:
-
at命令格式
at [选项][时间]
Ctrl + D
结束at命令的输入
选项 | 含义 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q<队列> | 使用指定的队列 |
-f<文件> | 从指定文件读入任务而不是从标准输入读入 |
-t <时间参数> | 以时间参数的形式提交要运行的任务 |
- at时间定义
at指定时间的方法 :- 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
- 使用midnight(深夜),noon (中午),teatime ( 饮茶时间,一般是下午4点)等比较模糊的词语来指定时间
- 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午来说明是上午还是下午。 例如 :12pm
- 指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy (月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如 : 04:00 2021-03-1
- 使用相对计时法。指定格式为: now + count time-units,now就是当前时间,time-units是时间单位这里能够是minutes(分钟)、hours(小时)、days(天)、weeks( 星期)。count是时间的数景天,几小时。例如 : now + 5 minutes
- 直接使用today(今天)、tomorrow( 明天)来指定完成命令的时间
- 应用实例
- 案例1 : 2天后的下午5点执行 /root/mubai
- 案例2 : atq命令来查看系统中没有执行的工作任务
- 案例3 : 明天17点钟,输出时间到指定文件内 比如 /root/mubai/mycal
- 案例4 : 2分钟后,输出时间到指定文件内 比如 /root/mubai/mydate
- 案例5 : 删除已经设置的任务,
atrm [编号]
- 案例1 : 2天后的下午5点执行 /root/mubai