☰
Linux atq 命令详解:查看 at 定时任务列表的完整指南(linux-command 项目)
2026/10/1 15:42:57 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

本篇指南以 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:00

at支持的常见时间写法包括: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

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询