atd 守护进程

atd 守护程序允许用户提交稍后执行的作业,例如“在凌晨 2:00”。
为了使用 atd 守护进程,它必须正在运行。
用户可以通过检查正在运行的进程列表来确认 atd 正在运行:

$ ps aux | grep atd
daemon   4730  0.0  0.2  1420  532  ?      S  15:42  0:00   /usr/sbin/atd 
madonna  5570  0.0  0.2  3572  640  pts/2  S  16:43  0:00   grep atd

请注意,第七列指定了进程与哪个终端相关联。
对于 blondie 的 grep 命令,终端是 pts/2,这可能是指 X 会话中的网络shell或者图形终端。
请注意,atd 守护程序没有关联的终端。
守护进程的定义特征之一是它断开与启动它的终端的关联。

批量延迟任务

批处理命令与 at 命令一样,用于将任务推迟到稍后的时间。
与 at 命令不同,batch 不会在特定时间运行该命令,而是等待系统不忙于其他任务,无论何时。
如果提交作业时机器不忙,作业可能会立即运行。
atd 守护进程监视系统的 loadavg,并在运行作业之前等待它降到 0.8 以下。

批处理命令的语法与 at 命令相同,其中的作业可以使用 stdin 指定,也可以使用 -f 命令行开关作为批处理文件提交。
如果指定了时间,批处理将延迟观察机器直到指定时间。
那时,batch 将开始监视系统的 loadavg,并在系统不忙时运行该作业。

如何在 Linux 中使用 at 调度任务
www. On IT Road .com

提交作业

at 命令用于将作业提交给 atd 守护程序以在特定时间运行。
要运行的命令或者作为脚本提交(使用 -f 命令行开关),或者直接通过 stdin 输入。
命令的标准输出被邮寄给用户。

at [-f filename | -m] TIME
SwitchEffect
-f filenamerun the script specified by filename
-mNotify the user by email when done, even if there is no output.

可以使用 HH:MM 指定一天中的时间,后缀为“am”或者“pm”。
也可以使用术语“午夜”、“中午”和“下午茶时间”。
(我们没看错,“下午茶时间”。
)还可以使用多种格式指定日期,包括 MM/DD/YY。
at(1) 手册页提供了更多详细信息。

摔跤手霍根想要打印一个包含他收到的所有粉丝邮件的文件 fanmail.txt。
不过,他有点担心,因为他与经常使用打印机的文图拉共用打印机。
为了避免打架,霍根决定将打印时间推迟到凌晨 2:00。

$ at 2:00 am
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at> lpr fanmail.txt
at> CTRL-D
job 7 at 2020-06-17 02:00

因为 hogan 没有使用 -f 命令行开关,at 命令提示 hogan 使用 stdin(键盘)输入他的命令。
幸运的是,hogan 知道 CTRL-D 在直接从终端输入时表示“文件结束”。
或者,他可以直接将命令通过管道输入标准输入:

$ echo "lpr fanmail" | at 2:00 am
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
job 7 at 2003-06-17 02:00

接下来,hogan 确认他的工作已使用 atq 注册。

$ atq
7     2003-06-17 02:00  a hogan

最后,霍根记得文图拉正在休假,所以他可以顺利打印他的粉丝邮件。
他决定取消他的 at 工作,直接打印文件。

$ atrm 7 
$ atq 
$ lpr fanmail.txt
日期:2020-09-17 00:13:51 来源:oir作者:oir