2008年9月11日星期四

at

机缘巧合,不得不用,于是研究下吧:
/var/spool/cron/atjobs
/var/spool/cron/atspool
/etc/at.deny
/etc/init.d/atd
/etc/pam.d/atd
/usr/bin/batch
/usr/bin/at
/usr/share
/usr/share/man/man8/atd.8.gz
/usr/share/man/man1/at.1.gz
/usr/share/man/man5/at.allow.5.gz
/usr/share/doc/at/copyright
/usr/share/doc/at/readme.txt.gz
/usr/share/doc/at/changelog.gz
/usr/share/doc/at/timespec
/usr/share/doc/at/changelog.Debian.gz
/usr/share/doc/at/Problems
/usr/sbin/atd
/usr/bin/atq
/usr/bin/atrm
/usr/share/man/man1/atq.1.gz
/usr/share/man/man1/batch.1.gz
/usr/share/man/man1/atrm.1.gz
/usr/share/man/man5/at.deny.5.gz
其主要的功能是在指定的时间执行指定的程序(at),也可以在系统负荷较低的时候执行(batch)。

at 命令和 batch 用法类似,通过 at TIME 就会获得一个提交命令的 prompt,也可以把命令写入一个文件,然后 -f 指定。-q 可以指定一个 queue(字母 a-zA-Z 指定,获得不同的 nice)。-l 和 atq 作用一样,-d 和 atrm 一样。另有 -c 显示命令到 stdout 和 -v 显示执行时间。配置文件主要是 /etc/at.allow 和 /etc/at.deny,存在前者时仅有里面的用户可以用 at,如果不存在根据后者文件内容拒绝用户(为空时拒绝所有用户)。

atd 是 at 的 daemon,可以指定一个 average load 供 batch 判断是否可以执行任务。

如何声明时间呢?这个是非常的自由的,如果想看看语法,可以参考 /usr/share/doc/at/timespec,用绝对的时间,如 23:11 或者 10:00 pm 等写法都可以,后面可以用 Sep 16 2008 等指定日期。还可以用相对的时间如 now + 4h 获得四小时以后执行的任务。

没有评论: