at 命令
用途
稍后运行命令。
语法
描述
at 命令从标准输入中读取以后要运行的命令的名称,并允许用户指定必须运行命令的时间。
除非您重定向,否则 at 命令将有关已调度命令的标准输出和标准错误发送给您。 它还将作业号和已调度时间写至标准错误。
当执行 at 命令时,它保留当前进程环境。 它不保留打开的文件描述符、陷阱和优先级。
/var/adm/cron/at.allow 和 /var/adm/cron/at.deny 文件控制哪些用户可以使用 at 命令。 具有 root 用户权限的用户可以创建、编辑或删除这些文件。 这些文件中的条目是用户登录名,每行一个名称。 以下是 at.allow 文件的示例:
root
nick
dee
sarah如果 at.allow 文件存在,那么只有登录名显示在其中的用户才能使用 at 命令。 系统管理员可以通过在 at.deny 文件中列出用户的登录名来显式阻止用户使用 at 命令。 如果只存在 at.deny 文件,任何其名称不出现在该文件中的用户可以使用 at 命令。
如果下列其中一项为真,那么用户不能使用 at 命令:
- at.allow 文件和 at.deny 文件不存在(仅允许 root 用户)。
- at.allow 文件存在,但用户登录名没有在文件中列出。
- at.deny 文件存在,且用户登录名列在其中。
如果 at.allow 文件不存在且 at.deny 文件不存在,那么只有具有 root 用户权限的用户才能使用 at 命令提交作业。
要安排作业稍后运行,您必须指定要启动此作业的时间。 可以通过使用 -t Date 标志或 Time、Day 和 Increment 参数来指定时间。 可将任意数目的作业安排为最多每秒运行 60 个。
使用以下格式指定 -t 标志的 Date 变量:
[ [CC ]YY] MMDDhhmm [.SS ]
Date 变量中的数字如下定义:
| 项 | 描述 |
|---|---|
| CC | 指定年份的前两位数字(纪元)。 |
| YY | 指定年份的后两位数字。 |
| MM | 指定一年的月份(01 到 12)。 |
| DD | 指定一月中的具体日子(01 到 31)。 |
| hh | 指定一天中的小时数 (00 到 23)。 |
| mm | 指定小时的分钟数 (00 到 59)。 |
| SS | 指定一分钟中的具体秒数(00 到 59)。 |
CC 和 YY 数字是可选的。 如果两者都不给出,那么假定为当前年份。 如果指定 YY,但未指定 CC,那么 CC 数字如下定义:
- 如果 YY 数字的值在 70 和 99 之间,那么假定 CC 数字的值为 19。
- 如果 YY 数字的值在 00 和 37 之间,那么假定 CC 数字的值为 20。
- SS 的缺省值是 00。
对于在 2038 和 2105 之间的年份,请采用 yyyy 格式指定年份。
最终生成的时间受到 TZ 环境变量的值的影响。
Time 参数可指定为后跟可选后缀的数字。 at 命令将一位和二位数字解释为小时。 它将四位数字解释为小时和分钟。 LC_TIME 语言环境范畴中的 T_FMT 项指定小时和分钟的顺序。 缺省顺序是:小时后跟分钟。 您还可以使用以下命令分隔小时和分钟: (Colon)。 缺省顺序是小时:分钟。
另外,您可以指定下列其中一个后缀:
- 上午
- pm
- 祖鲁语
如果不指定 am 或 pm,at 命令使用 24 小时制时钟。 这些后缀可以跟在时间之后作为单独的参数或用空格隔开。 am 和 pm 后缀是来自 LC_TIME 语言环境范畴中 AM_STR 和
PM_STR 项的定义值。 后缀 zulu 指示时间为 GMT (格林威治标准时间)。
at 命令还识别以下作为 Time 参数特殊值的关键字:
- 中午
- midnight
- 现在
- A 表示 AM
- PM 的 P
- N 表示中午
- M 表示午夜
您可以将可选的 Day 参数指定为月名和日号 (可能是以逗号开头的年号) 或星期几。 LC_TIME 语言环境范畴中的 D_FMT 项指定了月和日的顺序(缺省情况下,日跟在月之后)。 LC_TIME 语言环境范畴中的 DAY_1 到 DAY_7 项指定了长日期名。 LC_TIME 语言环境范畴中的 ABDAY_1 到 ABDAY_7 项指定了短日期名。 LC_TIME 语言环境范畴中的 MON_1 到 MON_12 项指定了长月份名。 LC_TIME 语言环境范畴中的 ABMON_1 到 ABMON_12 项指定了短月份名。 缺省情况下,长名完全拼写出来;而对于工作日短名缩写为两个或更多字符,对于月份,短名则缩写为三个字符。
at 命令识别 today 和 tomorrow 作为 Day 参数的特殊缺省值。 如果指定的时间晚于当前时间,那么 today 值是 Day 的缺省值;如果指定时间早于当前时间,那么 tomorrow 值是缺省值。 如果指定月份早于当前月份(且没有给出年份),那么明年是缺省年份。
标志
| 项 | 描述 |
|---|---|
| -c | 请求使用 csh 命令来执行此作业。 |
| -f File | 使用指定文件而非用标准输入作为输入。 |
| -F | 禁止删除验证。 将此标志与 -r 标志配合使用。 |
| -i | 指定交互式删除。 将此标志与 -r 标志配合使用。 |
| -k | 请求使用 ksh 命令来执行此作业。 |
| -l | 报告已调度的作业。 如果您具有 root 用户权限,那么您可以获取其他用户发出的作业。 |
| -m | 发送给用户有关成功执行命令的消息。 |
| -n [ User ] | 报告您的队列或用户的队列中的文件数。 |
| -o | 按调度顺序列出作业。 此标志仅和 -l 标志一起使用才有效。 |
| -q 队列 | 指定在哪个队列中调度要提交作业。 当和 -l 标志一起使用时,报告限于 Queue 变量指定的队列。 缺省情况下,at 作业在 a 队列中调度。 b, c 和 d 队列分别为 batch个作业, cron 个作业和 sync 个作业保留。
|
| -r 作业... | 除去先前由 at 或 batch 命令调度的 作业 ,其中 作业 是由 at 或 batch 命令分配的编号。 如果您没有 root 用户权限 (请参阅 su 命令) ,那么只能除去您自己的作业。 atrm 命令可供 root 用户用于除去由其他用户发出的作业或由特定用户发出的所有作业。 |
| -s | 请求使用 bsh 命令 (Bourne shell) 来执行此作业。 |
| -t 日期 | 提交作业,以便在 日期 变量指定的时间运行。 |
| -u 用户 | 删除指定用户的所有作业。 如果与 -r 标志一起使用,请不要指定 Job 变量 (正确的语法为 at -r -u User)。 |
| -v | 与 -l 标志配合使用以显示列出的作业的内容。 |
参数
| 项 | 描述 |
|---|---|
| 日 | 将可选的 Day 参数指定为月名和日号 (可能是以逗号开头的年号) 或星期几。 |
| 增量 | 可选 Increment 参数可以是下列其中一项: |
+(加号),后跟一个数字和下列其中一个单词:- 分
[s] - hour
[s] - 天
[s] - 星期
[s] - 个月
[s] - 年
[s]
- 分
- 特殊字
next后跟下列其中一个单词:- 分
[s] - hour
[s] - 天
[s] - 星期
[s] - 个月
[s] - 年
[s]
- 分
安全性
- 审计事件
如果正确地配置和启用了审计子系统,那么 at 命令就会在每次运行时生成以下审计记录或事件:
表 4。 审计事件 事件 信息 AT_JobAdd 列出 at 正运行的作业、任务完成的时间和发出该命令的用户。 - RBAC 用户
- RBAC 用户注意: 此命令可以执行特权操作。 只有特权用户才能执行特权限定的操作。 有关授权和权限的更多信息,请参阅安全中的特权命令数据库。 有关该命令的权限和授权列表,请参阅 "lssecattr命令或 "getcmdattr子命令。
退出状态
本命令返回以下退出值:
| 项 | 描述 |
|---|---|
| 重大安全事件数量 | at 命令成功提交、除去或列出一个或多个作业。 |
| >0 | 发生错误。 |
示例
- 要从终端调度命令,请输入类似下列其中之一的命令:
如果 uuclean 位于当前目录中,请输入:
at 5 pm Friday uuclean <Ctrl-D> at now next week uuclean <Ctrl-D>如果 uuclean 位于 $HOME/bin/uuclean中,请输入:
at now + 2 days $HOME/bin/uuclean <Ctrl-D>注: 在命令行上输入命令名作为最后一项时,如果命令不在当前目录中,那么必须提供完整路径名,并且 at 命令将不接受任何参数。 - 要在 1 月 24 日下午 3:00 运行 uuclean 命令,请输入以下任一命令:
echo uuclean | at 3:00 pm January 24 echo uuclean | at 3 pm Jan 24 echo uuclean | at 1500 jan 24 - 要作业自己重新调度,那么通过将类似于以下内容的代码包含在 shell 文件中并且从 shell 过程中来调用 at 命令:
echo "ksh shellfile" | at now tomorrow - 要列出您已发送的稍后要运行的作业,请输入:
at -l - 要取消一个作业,请输入:
at -r ctw.635677200.a这将取消作业
ctw.635677200.a。 使用 at -l 命令可列出分配给作业的作业号。
文件
| 项 | 描述 |
|---|---|
| /var/adm/cron/FIFO | 命名管道,使用 crontab 或 at 命令提交新作业时,它会将消息发送到 cron 守护程序。 |
| /usr/bin/at | 包含 at 命令。 |
| /var/adm/cron | 包含主 cron 目录。 |
| /var/adm/cron/at.allow | 指定许可用户的列表。 |
| /var/adm/cron/at.deny | 指定被拒绝用户的列表。 |
| /var/spool/cron/atjobs | 包含 at 的假脱机区域目录。 |