与cron不同,Unix at命令用于在一定的时间后或在一定的时刻执行设置好的命令。Unix at命令使用一个时间参数表示何时执行命令,然后就从标准输入中读入要执行的命令,此时就如同在shell下操作一样输入要执行的命令,***使用^D 退出输入命令的模式。
用户不必担心真正执行命令时是否能够找到正确的程序,at会将当前shell的设置,包括环境变量,保留起来,以便在执行命令时创造一个与启动at时完全相同的执行环境。
- $ at 1:00am +2days
- wgetftp://ftp.cdrom.com/pub/FreeBSD/packages/All/netscape.tgz
- ^D
上面命令将在两天后的凌晨1:00时启动进程下载文件,当然Unix at命令并不是十分精确,其执行时间只是表示大概时间,可能与标准时间存在一两分钟的差异。at也支持各种复杂的时间表示方法,可以使用hhmm,hh:mm,或者加上am或pm结尾的12小时制方式。还可以使用年月日,规定程序运行的日期:
- $ at 1:00am Mar 5
- echo Hello | mail root
- ^D
- Job 5 will be executed using /bin/sh
- $ atq
- Date Owner Queue Job#
- 01时00分00秒 00/03/05 root c 5
- $ atrm 5
用户的at程序执行结果也被系统邮寄给该用户,用户可以使用mail来查看程序的输出结果或执行错误。当用户启动at命令之后,可以使用atq命令来查看自己还没有执行的Unix at命令,如果atq是由root执行,则将列出系统中所有没有执行的Unix at命令。然后可以使用atrm命令根据atq输出Job号来删除at作业。
系统使用/var/at/at.allow和/var/at/at.deny文件来配置可以使用Unix at命令的用户,和不可以使用at命令的用户。其中at.allow的优先权更高,如果存在at.allow,就只允许这个文件中列出的用户使用at,而不考虑任何不在这个文件中列出的用户。
因此可以使用一个空at.allow文件禁止所有用户使用at。当不存在at.allow文件的时候,那么凡不在at.deny文件中列出的用户都可以使用at。
【编辑推荐】