想用 at ,那就得先启动吧!
启动atd:
#/etc/init.d/atd restart
设置开机就启动 atd 服务:
#chkconfig atd on
at的运行方式:使用 at 这个命令来生成所要运行的工作,并将这个工作以文本文件的方式写入 /var/spool/at/ 目录内,该工作便能等待 atd 这个服务取用与执行了。
谁能使用 at 呢?可以通过 /etc/at.allow 与 /etc/at.deny 这两个文件进行限制。工作情况如下:
1.先寻找/etc/at.allow这个文件,写在这个文件中用户才能使用 at ,没有在这个文件中的用户则不能使用(即使没有写在 /etc/at.deny中);
2.如果 /etc/at.allow 不存在,就寻找 /etc/at.deny 文件,写在这个文件里的用户则不能使用 at ,而没有在这个文件里的用户就可以使用;
3.如果两个文件都不存在,只有root能使用。
#at [-mldv] TIME
#at -c 工作号码
-m:当at的工作完成后,即使没有输出信息,以email通知该用户工作已完成。
-l:at -l 相当于 atq ,列出目前系统上面的所有该用户的 at 调度。
-d:at -d 相当于 atrm,可以取消一个在 at 调度中的工作。
-v:可以使用较明显的时间格式列出 at 调度中的任务列表。
-c:可以列出后面接的该项工作的实际命令内容。
TIME:时间格式,可以定义什么时候进行这项工作,格式有:
HH:MM 在今日的这个时刻进行,若超过时间了,就明日执行
HH:MM YYYY-MM-DD 强制在某年某月某一天执行
HH:MM[am|pm] [Month] [Data] ex> 04pm March 17
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days 就是说在某个时间点再加多久后执行
例子:过五分钟后,将 /root/.bashrc 寄给 root 自己
#at now + 5 minutes
at>/bin/mail root -s "testing at job" < /root/.bashrc
at>[EOF] ==>用 CTRL-d结束
注意上面的命令与文件一定要用绝对路径。
将第四个工作内容列出来查阅
#at -c 4
将电脑在2009/02/22日 23:00关闭
#at 23:00 2009-02-22
at>/bin/sync
at>/sbin/shutdown -h now
at>[EOF]
at的执行与终端机环境有关,所有stdout、stderr都会传送到执行者的 mailbox 里去,若要在终端机上看到信息,则像这样: echo "hello" >/dev/tty1 .
在at工作调度的使用上,系统会将该项 at 工作独立出你的bash环境中,直接交给系统的atd程序来管理,因此,你执行了 at 的工作之后就可以立刻脱机了。
at 工作的管理(查询、删除)
#atq ==>查询
#atrm [jobnumber] ==>删除
batch:系统有空时才执行后台任务。如果在一个非常忙的时候执行 at 不太好,最好是在机器空闲时执行。
batch会在CPU工作负载小于0.8的时候,才进行你所执行的工作任务。
#batch 23:00 2009-03-17
at>sync
at>shutdown -h now
at>[EOF]