我使用过的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

To:[email protected]

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命令系列总目录

相关推荐