Linux命令之at

功能说明

在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart; 开机即启动则需要运行 chkconfig --level 2345 atd on)。在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务。 通过'添加任务计划'的一步步引导,则可建立一个定时执行的任务。

在 linux系统中你可能已经发现了为什么系统常常会自动的进行一些任务?这些任务到底是谁在支配他们工作的?在linux系统如果你想要让自己设计的备份 程序可以自动在某个时间点开始在系统底下运行,而不需要手动来启动它,又该如何处置呢? 这些例行的工作可能又分为一次性定时工作与循环定时工作,在系统内又是哪些服务在负责?


语法

at[参数][时间]


参数

-m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出

-I atq的别名

-d atrm的别名

-v 显示任务将被执行的时间

-c 打印任务的内容到标准输出

-V 显示版本信息

-q<列队> 使用指定的列队

-f<文件> 从指定文件读入任务而不是从标准输入读入

-t<时间参数> 以时间参数的形式提交要运行的任务


说明:

at允许使用一套相当复杂的指定时间的方法。它能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够 使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计 时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或 mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 上面介绍的都是绝对计时法,其实还能够使用相对 计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units ,now就是当前时间,time- units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几 天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。


TIME:时间格式,这里可以定义出什么时候要进行 at 这项任务的时间,格式有:


HH:MM

ex> 04:00

在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此任务。


HH:MM YYYY-MM-DD

ex> 04:00 2009-03-17

强制规定在某年某月的某一天的特殊时刻进行该项任务


HH:MM[am|pm] [Month] [Date]

ex> 04pm March 17

也是一样,强制在某年某月某日的某时刻进行该项任务


HH:MM[am|pm] + number [minutes|hours|days|weeks]

ex> now + 5 minutes

ex> 04pm + 3 days

就是说,在某个时间点再加几个时间后才进行该项任务。


实例1

三天后的下午 5 点锺执行 /bin/ls

[root@localhost ~]# at 5pm+3 days

at> /bin/ls

at> <EOT>

job 7 at 2013-01-08 17:00


实例2

明天17点钟,输出时间到指定文件内

[root@localhost ~]# at 17:20 tomorrow

at> date >/root/2013.log

at> <EOT>

job 8 at 2013-01-06 17:20


实例3

计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务

[root@localhost ~]# atq

8 2013-01-06 17:20 a root

7 2013-01-08 17:00 a root


实例4

删除已经设置的任务小

[root@localhost ~]# atq

8 2013-01-06 17:20 a root

7 2013-01-08 17:00 a root

[root@localhost ~]# atrm 7

[root@localhost ~]# atq

8 2013-01-06 17:20 a root


实例5

显示已经设置的任务内容

[root@localhost ~]# at -c 8

#!/bin/sh

# atrun uid=0 gid=0

# mail root 0

umask 22此处省略n个字符

date >/root/2013.log


参考:

http://www.cnblogs.com/peida/archive/2013/01/05/2846152.html

光荣之路微信公众号:gloryroadtrain