语法
这些命令采用以下一般形式:
at [-V] [-q queue] [-f file] [-mldbv] TIME at -c job [job...] atq [-V] [-q queue] atrm [-V] job [job...] batch [-V] [-q queue] [-f file] [-mv] [TIME]
说明
at 和批处理命令使用由用户的环境变量 SHELL、用户的登录 shell 或者最终 /bin/sh 设置的 shell 从标准输入或者指定的文件中读取预期的命令,这些命令将在稍后执行。
这四个命令相互关联:
- at :在指定时间执行命令。
- atq :列出用户的待处理作业,除非用户是超级用户;在这种情况下,会列出每个人的工作。输出行的格式(每个作业一个)是:作业编号、日期、小时、作业类别。
- atrm :删除作业,由作业编号标识。
- batch:当系统负载水平允许时执行命令;换句话说,当平均负载低于 0.8 或者低于 atrun 调用中指定的值时。
在Linux中,命令at、batch、atq和atrm队列检查或者删除作业以供以后执行。
默认情况下可能不会安装这些命令。
调度任务的典型方法是通过 cron ,而不是 at 及其相关命令。
使用说明
At 允许相当复杂的时间规范。
它接受 HH:MM 形式的时间以在一天中的特定时间运行作业。
如果该时间已经过去,则假定为第二天。
我们还可以指定午夜、中午或者下午茶时间(下午 4 点),并且我们可以将一天中的时间以 AM 或者 PM 为后缀,以便在早上或者晚上运行步。
我们还可以指定作业将在哪一天运行,方法是在月份名称日的形式中提供带有可选年份的日期,或者以 MMDDYY 或者 MM/DD/YY 或者 DD.MM.YY 形式提供日期。
日期的规范必须遵循一天中的时间规范。
我们还可以提供像 now + count time-units 这样的时间,其中时间单位可以是分钟、小时、天或者周,我们可以通过在时间后加上今天来告诉 at 今天运行作业并明天运行作业通过在时间后缀明天。
例如,要在下午 4 点运行作业。
三天后,你会在下午 4 点做。
- 3 天,要在 7 月 31 日上午 10 点运行作业,我们将在 7 月 31 日上午 10 点运行,而要在明天凌晨 1 点运行作业,我们将在明天凌晨 1 点运行。
对于 at 和 batch ,从标准输入或者使用 -f 选项指定的文件中读取命令并执行。
从调用时起保留工作目录、环境和 umask。
从 sushell 调用的 at 或者批处理命令将保留当前用户 ID。
用户将收到来自他的命令的标准错误和标准输出(如果有)。
将使用命令 /usr/sbin/sendmail 发送邮件。
如果从 su shell 执行 at,则登录 shell 的所有者将收到邮件。
超级用户和特权
超级用户在任何情况下都可以使用这些命令。
对于其他用户,使用 at 的权限由文件 /etc/at.allow 和 /etc/at.deny 决定。
如果文件 /etc/at.allow 存在,则只允许其中提到的用户名使用 at 。
如果 /etc/at.allow 不存在,则检查 /etc/at.deny,然后允许其中未提及的每个用户名使用 at 。
如果两者都不存在,则只允许超级用户使用 at。
空的 /etc/at.deny 意味着每个用户都可以使用这些命令——这种情况是默认配置。
在交互式会话中运行 at 时,按 Ctrl+D 结束 at 会话。
命令选项
这些命令采用以下可选开关:
- -V :将版本号打印到标准错误。
- -q queue:使用指定的队列。队列名称由单个字母组成;有效的队列名称范围从 a 到 z 。和 A 到 Z 。 a 队列是 at 的默认队列,而 b 队列是 batch 的默认队列。具有更高字母的队列运行得更好。特殊队列“=”是为当前正在运行的作业保留的。如果一个作业被提交到一个用大写字母指定的队列,它被视为在那个时候它已经被提交到批处理中。如果给 atq 一个特定的队列,它只会显示该队列中待处理的作业。
- -m :即使没有输出,也可以在作业完成时向用户发送邮件。
- -f file:从文件而不是标准输入读取作业。
- -l : atq 的别名。
- -d : atrm 的别名。
- -v :显示作业执行的时间。
- -c :将命令行上列出的作业分类为标准输出。