我使用过的Linux命令之at - 在指定时间执行一次任务
我使用过的Linux命令之at - 在指定时间执行一次任务
用途说明
at命令用于在指定时间执行一次任务。如果任务需要重复执行,需用crontab。
atq用于打印队列中的任务,atrm用于删除任务。
常用参数
at TIME 用于设定指定时间的任务,其中TIME有很多表达方式。
at -f job.sh TIME 在指定时间执行job.sh。
使用示例
示例一
[root@jfht ~]# date
2010年09月30日星期四21:11:07CST
[root@jfht~]#atnow+5minutes
at>date
at><EOT>
job 1 at 2010-09-30 21:16过了六七分钟之后
[root@jfht~]#date
2010年09月30日星期四21:19:58CST
[root@jfht ~]#奇怪,在21点16分时没有打印出当前的时间。
可能发送到邮箱了,使用mail命令检查一下。
[root@jfht ~]# mail
Mailversion8.16/6/93.Type?forhelp.
"/var/spool/mail/root": 20882 messages 1 new 20882 unread&
Message20883:
[email protected]:16:002010
Date:Thu,30Sep201021:16:00+0800
From:root<[email protected]>
Subject:Outputfromyourjob1
2010年 09月 30日 星期四 21:16:00 CST示例二
[root@jfht ~]# at -f ./job.sh now + 5 minutes
job2at2010-09-3021:42
[root@jfht~]#atq
22010-09-3021:42aroot
[root@jfht ~]#过了五分钟之后。
[root@jfht ~]# cat job.txt2010年 09月 30日 星期四 21:42:00 CST
示例三
[root@jfht ~]# date
2010年09月30日星期四21:44:58CST
[root@jfht~]#at5pm+3days/bin/ls
syntaxerror.Lasttokenseen:/
Garbledtime
在Linux宝库上的例子有错,命令行上不能直接跟任务命令行。
[root@jfht~]#at5pm+3days
at><EOT>
job3at2010-10-0317:00
[root@jfht~]#atq
32010-10-0317:00aroot
[root@jfht~]#at5pm+2weeks
at><EOT>
job5at2010-10-1417:00
[root@jfht~]#at17:20tomorrow
at><EOT>
job6at2010-10-0117:20
[root@jfht~]#at23:5912/31/1999
at><EOT>
job 7 at 1999-12-31 23:59此处时间在过去!!!
[root@jfht~]#atq
62010-10-0117:20aroot
32010-10-0317:00aroot
5 2010-10-14 17:00 a root注意没有任务7。
[root@jfht~]#at10:4010/1/2010
at><EOT>
job8at2010-10-0110:40
[root@jfht~]#atq
62010-10-0117:20aroot
82010-10-0110:40aroot
32010-10-0317:00aroot
52010-10-1417:00aroot
[root@jfht ~]#[root@jfht ~]# atrm 3
[root@jfht~]#atq
62010-10-0117:20aroot
82010-10-0110:40aroot
5 2010-10-14 17:00 a root问题思考
1. 能否修改已经设置好的任务?
2. 时间有哪些常用格式?
相关资料
【1】Linux宝库 Linux指令篇:日期时间排程--at 注:里面的例子有问题
【2】鸟哥的Linux私房菜 实际运作工作排程
【3】Linux 技巧: 用 cron 和 at 调度作业
返回 我使用过的Linux命令系列总目录