linux at命令使用

来源:互联网 发布:精工grand seiko 知乎 编辑:程序博客网 时间:2024/06/05 03:03

 

转自:http://blog.chinaunix.net/u/12367/showart_243938.html

 

/etc/init.d/atd服务时at命令的调度服务,因此需要打开这个服务

查看状态:/etc/init.d/atd status

打开服务:/etc/init.d/atd start

关闭服务:/etc/init.d/atd stop

 

at  batch 从标准输入或一个指定的文件读取命令,这些命令在以后某个时间用 /bin/sh 执行。

 

At 允许相当复杂的时间指定,它扩展了 POSIX.2 标准。

 

它接受 HH:MM 的时间式样,用来指定在一天的某个时间运行一个作业。 (如果时间已经过了则假定为第二天。)

 

你可以指定 midnight (午夜) noon (中午 teatime (下午4),你可以用 AM  PM 后缀指定一天的上午或下午。

 

你可以给出 month-name day 加上可选的年份的式样用来指定运行 at 的日期,或者给出 MMDDYY  MM/DD/YY  DD.MM.YY 式样用来指定运行 at 的日期。日期的指定必须跟在时间指定的后面。你也可以给出象 now + 计数 时间单位 的式样,这里的时间单位可以是 minutes  hours  days  weeks 你可以给时间加一个 today 后缀来指定 at 今天运行作业,可以给时间加一个 tomorrow 后缀来指定 at 明天运行作业。

 

例如,

要在三天以后的下午 4 点运行一个作业,at 时间参数可以指定为 4pm + 3 days

 

要在731日上午10:00运行一个作业, at 时间参数可以指定为 10am Jul 31

 

要在明天上午1点运行一个作业,at 时间参数可以指定为 1am tomorrow 

 

使用at命令定期运行程序 , 2005-12-28 18:16:50 by Johnny

 

使用at命令定期运行程序

 

1. 使用cron运行任务

cron任务的缺点是计划要经常运行,假如我们只是想要让特定任务运行一次呢?

那么,这时候就要用到at监控程序了。

 

设置at命令很简单,指示定运行的时间,那么就会在哪个时候运行。at类似打印进程,会把任务放到/var/spool/at目录中,到指定时间运行它。

 

at命令相当于另一个shell,运行at time命令时,它发送一个个命令,可以输入任意命令或者程序。

 

at now + time命令可以在指示任务。

 

假设处理一个大型数据库,要在别人不用系统时去处理数据,比如凌晨25分。那么我们就应该先建立/home/mj/airplane脚本管理数据库,计划处理/home/mj/air-safe文件中的结果。正常方式是这样启动下列命令:

 

# at 2:05 tomorrow

at> /home/mj/airplane > /home/mj/air-safe

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 任务在晚上1030分开始

Fixed at 1:00 12/20/04 任务在20041220凌晨1点开始

-----------------------------------------------------------------------

 

2. 查看目前在等待执行的任务

输入任务后,可以使用at -l命令(或者atq)可以看到目前等待执行的任务,输出提供了任务号、用户和任务执行时间等信息。

 

# at -l

8 2004-12-15 02:05 a mj

 

里面的a表示是at任务还是batch命令生成的任务。

 

3. 删除at任务

删除一个at任务比较简单,使用at -r(或者atrm)命令就可以轻松解决。

比如我知道了任务的队列号,那么就可以删除它:

 

# at -d 8

 

就删除了队列号为8at任务了。


 

原创粉丝点击