16、at 定时任务

at 和 crontab 的区别: 

  • crontab 命令可以重复执行,at 命令只执行一次
  • at 命令是一次性定时计划任务,执行完一次该任务后就不再执行了。

1、at

守护进程 atd 会以后台模式运行,检查作业队列来运行作业。

atd 守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业。默认情况下,atd 守护进程每60秒检查一次目录。有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

注:使用 at 命令时,要确保 atd 进程的启动,可以使用如下命令查看

[root@localhost home]# ps -ef |grep atd           
root       1253      1  0 09:50 ?        00:00:00 /usr/sbin/atd -f
root       5812   5094  0 14:25 pts/1    00:00:00 grep --color=auto atd

3、at 命令:

at [ 选项] time

         CTRL + D 结束at命令的输入

选项    含义
-m    当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-l(L的小写) atq的别名
-d    atrm的别名
-v    显示任务将被执行的时间
-c    打印任务的内容到标准输出
-V    显示版本信息
-q <队列>    使用指定的队列
-f <文件>    从指定文件读入任务而不是从标准输入读入
-t <时间参数>    以时间参数的形式提交要运行的任务

4、atq 命令可以查看系统中等待的作业

   atrm 命令可以删除系统中的等待作业,后面加上要删除的作业id  

[root@localhost home]# at -l
4       Wed May 25 17:00:00 2022 a root
[root@localhost home]# atq
4       Wed May 25 17:00:00 2022 a root
[root@localhost home]# atrm 4
[root@localhost home]# atq
[root@localhost home]#

5、at 指定时间的方法

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

案例1:二天后的下午5点执行/bin/ls /
命令: 
[root@localhost home]# at 5pm + 2 days
at> /bin/ls/
at> <EOT>
job 5 at Wed May 25 17:00:00 2022

案例2:明天17点钟,输出时间到指定文件内
命令:
[root@localhost home]# at 17:00 tomorrow
at> date > /home/date
at> <EOT>
job 6 at Thu May 26 17:00:00 2022

 

posted @ 2025-11-18 09:03  chao_xiong  阅读(11)  评论(0)    收藏  举报