linux中at命令的使用介绍

cron被用来调度重复的任务,linux at命令被用来在指定时间内调度一次性的任务。要使用linux at命令,你必须安装了at RPM软件包,并且 atd服务必须在运行。可以使用service atd start启动atd服务。要判定该软件包是否被安装了,使用rpm -q at命令。要判定该服务是否在运行,使用 /sbin/service atd status 命令。

[例1] 指定在今天下午5:30执行某命令。假设现在时间是中午12:30,1999年2月24日,其命令格式如下:
at 5:30pm
at 17:30
at 17:30 today
at now + 5 hours
at now + 300 minutes
at 17:30 24.2.99
at 17:30 2/24/99
at 17:30 Feb 24
以上这些命令表达的意义是完全相同的,所以在安排时间的时候完万能够根据个人喜好和具体情况自由选择。一般采用绝对时间的24小时计时法能够避免由于用户自己的疏忽造成计时错误的情况发生,例如上例能够写成 : at 17:30 2/24/99  这样很清楚,而且别人也看得懂。


[例2]
$ at -f work 4pm + 3 days
在三天后下午4点执行文档work中的作业。
$ at -f work 10am Jul 31
在7月31日上午10点执行文档work中的作业。

atq:  查看系统没有执行工作任务。

atrm: 启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。
格式:atrm+任务号
同时,还可以进入到/var/spool/at目录里把计划任务删除,计划任务的文件都保存在该目录里,可以用rm -f


[例3] 找出系统中任何以txt为后缀名的文档,并且进行打印。打印结束后给用户foxy发出邮件通知取件。指定时间为十二月二十五日凌晨两点。
首先键入:
$ at 2:00 12/25/99
然后系统出现at>提示符,等待用户输入进一步的信息,也就是需要执行的命令序列:
at> find / -name "*.txt"|lpr
at> echo "foxy:All texts have been printed.You can take them over.Good day!River" | mail -s "job done" foxy
输入完每一行指令然后回车,任何指令序列输入完毕后,使用组合键结束linux at命令的输入。这时候屏幕将出现如下信息:
warning:command will be executed using /bin/sh.
job 1 at 1999-12-25 02:00
提醒用户将使用哪个shell来执行该命令序列。


实际上假如命令序列较长或经常被执行的时候,一般都采用将该序列写到一个文档中,然后将文档作为linux at命令的输入来处理。这样不容易出错。
[例4] 上面的例子能够修改如下:
将命令序列写入到文档/tmp/printjob,语句为:
$ at -f /tmp/printjob 2:00 12/25/99
这样一来,linux at命令将使用文档中的命令序列,屏幕显示如下:
Warning:command will be executed using /bin/sh.
job 2 at 1999-12-25 02:00
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
可以将这个服务在系统启动的时候也自动启动:
在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
以上是linux at命令的使用案例。


在任何情况下,终极用户都能够使用这个命令。对于其他用户来说,是否能够使用就取决于两个文档:/etc/at.allow和/etc/at.deny。假如/etc/at.allow文档存在的话,那么只有在其中列出的用户才能够使用linux at命令;假如该文档不存在,那么将检查/etc/at.deny文档是否存在,在这个文档中列出的用户均不能使用该命令。假如两个文档都不存在,那么只有终极用户能够使用该命令;空的/etc/at.deny文档意味着所有的用户都能够使用该命令,这也是默认状态。

猜你喜欢

转载自haiouc.iteye.com/blog/1584082