之前说了使用crontab实现定时执行任务,假如我们只是想要让特定任务运行一次,那么,这时候就要用到at监控程序了。
一、at服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
service atd start //启动服务
service atd stop //关闭服务
service atd restart //重启服务
service atd reload //重新载入配置
service atd status //查看服务状态
二、at在配置文件:
at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它 。at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。
三、参数详解
at [-V] [-q x] [-f file] [-mldbv] time
at -c job ...
atq [-V] [-q x]
atrm [-V] job ...
-V : 印出版本编号
-q : 使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时使用多个 queue,而 queue 的编号为 a, b, c... z 以及 A, B, ... Z 共 52 个
-m : 即使程序/指令执行完成后没有输出结果, 也要寄封信给使用者
-f file : 读入预先写好的命令档。使用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一次读入 网络应用
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不用 at -d)
-v : 列出所有已经完成但尚未删除的指定
at命令执行流程
# at 2:05 tomorrow
at>/home/kyle/do_job
at> Ctrl+D
AT Time中的时间表示方法
-----------------------------------------------------------------------
时 间 例子 说明
-----------------------------------------------------------------------
Minute at now + 5 minutes 任务在5分钟后运行
Hour at now + 1 hour 任务在1小时后运行
Days at now + 3 days 任务在3天后运行
Weeks at now + 2 weeks 任务在两周后运行
Fixed at midnight 任务在午夜运行
Fixed at 10:30pm 任务在晚上10点30分
Fixed at 23:59 12/31/2018 任务在2018年12月31号23点59分
[root@localhost ~]# at 5pm +3 days
at> /bin/date
at> <EOT>
job 1 at 2016-08-30 17:00
[root@localhost ~]# atq
1 2016-08-30 17:00 a root
[root@localhost ~]# at 2:05 tomorrow
at> echo the end of world !
at> <EOT>
job 2 at 2016-08-28 02:05
[root@localhost ~]# atq
2 2016-08-28 02:05 a root
1 2016-08-30 17:00 a root
[root@localhost ~]# atrm 2
[root@localhost ~]# atq
1 2016-08-30 17:00 a root