- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
本篇指南以 linux-command 开源仓库中的 atq 命令文档 为主体,系统讲解atq命令的语法、选项、输出格式与实战用法,并结合同仓库的 at 命令文档 与 atrm 命令文档 串起「创建任务 → 查看任务 → 删除任务」的完整 at 定时任务工作流。读完本文,你将能够熟练使用atq查询当前用户的 at 任务列表、按队列过滤任务,并理解 at 任务队列体系的运作方式。
atq 是什么:at 任务家族的"查询窗口"
atq(at queue)命令用于显示系统中待执行的任务列表,也就是列出当前用户的 at 任务列表。它与at(创建定时任务)、atrm(删除定时任务)共同组成 at 一次性任务调度体系:
| 命令 | 作用 | 仓库文档 |
|---|---|---|
at | 在指定时间执行一个任务(一次性计划任务) | at.md |
atq | 列出当前用户的 at 任务列表(查看队列) | atq.md |
atrm | 删除待执行任务队列中的指定任务 | atrm.md |
在 linux-command 仓库的命令索引数据中,atq被登记为"列出当前用户的at任务列表",与at(在指定时间执行一个任务)、atrm(删除待执行任务队列中的指定任务)相邻排布,可见三者是配套使用的命令组。仓库还通过 scripts/dash.mjs 将全部命令文档(含 atq)生成为可被 Dash/Zeal 离线检索的 docset 索引,方便本地快速查阅。
atq本身只负责"看",不负责"建"和"删"——任务由at创建,由atq查看,由atrm按任务号删除。理解这一点,就能把 at 任务调度闭环串起来。
atq 语法与选项
atq的语法非常简单:
atq [-V] [-q 队列] [-v]各选项说明如下:
| 选项 | 含义 |
|---|---|
-V | 显示版本号(大写的 V) |
-q | 查询指定队列的任务 |
-v | 显示将要执行的任务(小写 v,部分发行版支持) |
其中-q选项是atq最实用的过滤能力:系统允许通过at的-q选项把任务投递到不同字母标识的队列中,再用atq -q 队列名单独查看某个队列里的任务,实现任务分组管理。
atq 实战示例(可直接复制运行)
以下示例完整复现自 atq.md,包含创建、查看、过滤、查版本四个典型场景。
1. 创建任务后用 atq 查看当前用户任务列表
先用at创建一个 10 分钟后执行的任务(输入完成后按Ctrl+D发送<EOT>结束输入):
[root@localhost ~]# at now + 10 minutes at> echo 1111 at> <EOT> job 3 at Fri Apr 26 12:56:00 2013任务创建成功,编号为job 3。此时用atq查看当前用户的任务列表:
[root@localhost ~]# atq 3 Fri Apr 26 12:56:00 2013 a root输出中的3即任务号,与at创建时返回的job 3一一对应;a是任务所在队列(默认队列);root是提交任务的用户名。
2. 按队列过滤:-q 选项
at创建任务时可以指定队列,atq则负责按队列过滤查看。先把任务投递到a队列:
[root@localhost ~]# at -q a now + 10 minutes at> echo "Task in queue a" at> <EOT> job 4 at Fri Apr 26 13:06:00 2013再用atq -q a只查看队列a中的任务:
[root@localhost ~]# atq -q a 4 Fri Apr 26 13:06:00 2013 a root-q a与创建时的-q a严格对应,实现了"按队列分组查看"的精准查询。
3. 显示 atq 版本号
[root@localhost ~]# atq -V atq (GNU at) 3.1.20输出表明该机器安装的是 GNU at 3.1.20,可用于排查 at 软件包版本问题。
解读 atq 输出格式
atq默认输出 4 列(示例中为空格分隔,实际为对齐格式):
任务号 执行时间 队列 提交用户 3 Fri Apr 26 12:56:00 2013 a root- 任务号:任务的唯一数字编号,也是
atrm删除任务时需要的参数; - 执行时间:任务预计执行的具体日期时间;
- 队列:单字母队列标识(
a为默认队列); - 提交用户:提交该任务的用户名;
atq只显示当前用户自己的任务,root 用户则可看到全部用户的任务。
组合实战:at + atq + atrm 的完整任务生命周期
atq的价值在于配合at和atrm形成完整闭环。下面用 at.md 与 atrm.md 中的示例串起全流程。
第一步:创建任务(at)
创建一个"三天后的下午 5 点执行/bin/ls"的任务:
[root@localhost ~]# at 5pm+3 days at> /bin/ls at> <EOT> job 7 at 2013-01-08 17:00再创建一个"明天 17:20 把时间写入日志文件"的任务:
[root@localhost ~]# at 17:20 tomorrow at> date >/root/2013.log at> <EOT> job 8 at 2013-01-06 17:20第二步:查看待执行任务(atq)
计划任务设定后、执行之前,用atq查看系统尚未执行的任务,并核对任务号与执行时间:
[root@localhost ~]# atq 8 2013-01-06 17:20 a root 7 2013-01-08 17:00 a root可以看到atq默认按执行时间排序展示,两个待执行任务一目了然。
第三步:查看任务内容(at -c)
执行前想确认任务到底要跑什么命令,可以用at -c 任务号查看任务对应的 shell 脚本内容:
[root@localhost ~]# at -c 8 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 umask 22此处省略n个字符 date >/root/2013.log从输出可以看到,at 任务本质上是一个由atd守护进程到时执行的 shell 脚本,脚本末尾就是当初输入的实际命令。
第四步:删除不再需要的任务(atrm)
如果发现任务不需要执行了,用atrm按任务号删除,再以atq验证删除结果:
[root@localhost ~]# atq 2 Mon May 17 08:00:00 2010 a root 1 Sat May 15 17:00:00 2010 a root [root@localhost ~]# atrm 2 # 删除任务 2删除后再执行atq,任务 2 即从列表中消失,任务 1 仍然保留:
[root@localhost ~]# atq 1 Sat May 15 17:00:00 2010 a root至此,"at创建 →atq查看 →at -c检查 →atrm删除"的完整 at 任务生命周期全部打通。
进阶补充:其他 at 用法速览
结合 at.md,atq查看的任务还可以来自以下几种创建方式,便于读者在实际场景中灵活运用:
使用任务文件批量创建(适合内容较长的脚本):
[root@localhost ~]# echo "/bin/ls" > mytask.txt [root@localhost ~]# at -f mytask.txt 5pm+3 days job 9 at 2013-01-08 17:00指定队列创建(与atq -q配合实现分组):
[root@localhost ~]# at -q b 5pm+3 days at> /bin/ls at> <EOT> job 10 at 2013-01-08 17:00任务执行后发送邮件通知:
[root@localhost ~]# at -m 5pm+3 days at> /bin/ls at> <EOT> job 11 at 2013-01-08 17:00at支持的常见时间写法包括:hh:mm(如17:20,已过则顺延到第二天)、模糊时间词midnight/noon/teatime(下午 4 点左右)、AM/PM12 小时制、month day、mm/dd/yy、dd.mm.yy日期格式,以及now + count time-units相对计时法(minutes/hours/days/weeks)和today/tomorrow等。这些任务创建后,都可以统一用atq查询。
小结
atq是 at 一次性任务调度体系中负责"查询"的命令,语法atq [-V] [-q 队列] [-v];- 输出包含任务号、执行时间、队列、提交用户四列,任务号是后续
atrm删除操作的依据; -q 队列名与at -q 队列名配合,可实现任务的分队列管理与精准过滤;- 与 at 命令、atrm 命令 配合使用,即可覆盖 at 定时任务从创建、查看、检查到删除的完整生命周期;
- 本仓库 dist/data.json 收录了
atq等全部命令的索引描述,可通过仓库搜索功能或 Dash docset(由 scripts/dash.mjs 生成)离线快速查阅。
- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
相关推荐
linux-command 命令详解:atrm 删除 at 定时任务队列中的指定任务
linux command 命令详解:atrm 删除 at 定时任务队列中的指定任务 本文是 Linux 命令大全仓库(linux command)中 atrm
文档教程Linux at 命令详解:一次性定时任务调度与 atq/atrm 任务队列管理
Linux at 命令详解:一次性定时任务调度与 atq/atrm 任务队列管理 at 是 Linux 系统中用于 在指定时间执行一次性任务 的计划任务工具,它
文档教程linux-command 命令速查:clock 命令详解与 Linux 硬件时钟(RTC)时间调整实战指南
linux command 命令速查:clock 命令详解与 Linux 硬件时钟(RTC)时间调整实战指南 本文基于 linux command https:
文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考