- 移动开发
- 开发工具
【免费下载链接】ZeroTermux
导读
atq是 Linux 任务调度体系中与at命令配套的查询工具,用于列出当前用户的待执行任务(at 任务)列表。在 ZeroTermux 这款将完整 Linux 命令行环境带入 Android 终端的应用里,atq同样可以直接使用,帮助你随时核对已排期的定时任务、确认任务号并配合atrm精准删除。读完本文,你将掌握atq的完整语法、选项语义、输出格式解读,以及它与at、batch、atrm组成的"创建—查询—删除"任务管理闭环,并了解 ZeroTermux 内置命令手册的呈现机制。
atq 是什么:一张"待执行任务"的清单
atq命令(at queue 的缩写)用于显示系统中待执行的任务列表,也就是列出当前用户的 at 任务列表。它本质上是at -l的等价形式:当你通过at排定了一批未来要执行的命令后,atq会以简洁的表格形式返回每个任务的编号(job number)、预定执行时间、所属队列以及发起用户。
在 ZeroTermux 的离线命令手册中,atq 的文档 就位于app/src/main/assets/cmd/目录下,与at、atrm、batch等命令手册并列存放,属于应用内置的 Linux 命令速查体系的一部分。
一个典型的atq输出如下:
3 Fri Apr 26 12:56:00 2013 a root各字段的含义为:
| 字段 | 示例值 | 含义 |
|---|---|---|
| 任务号 | 3 | 任务的唯一编号,后续用atrm删除时直接引用 |
| 执行时间 | Fri Apr 26 12:56:00 2013 | 任务预定的运行时刻 |
| 队列标识 | a | 任务所属的队列字母(at 默认使用a队列,batch 使用b队列) |
| 任务所有者 | root | 创建该任务的用户 |
命令语法与选项
atq的语法非常简单,不需要任何参数:
atq(选项)可选选项只有两个:
| 选项 | 作用 |
|---|---|
-V | 显示 atq 自身的版本号 |
-q | 查询指定队列中的任务,例如atq -q b只列出 batch 队列中的任务 |
需要说明的是,at 任务体系使用单字母队列(a–z)对任务进行分组管理:at默认把任务放入a队列,batch默认放入b队列,batch 的文档 也明确指出其"用法与 at 相似"。因此当任务较多时,可以借助-q按队列筛选,快速定位某个通道下的任务。
实战:从创建任务到查询队列
atq通常不会单独使用,而是与at命令配合。以 atq.md 文档 中的完整实例为例,先在当前时间 10 分钟后排定一个任务:
at now + 10 minutes at> echo 1111 at> <eot> job 3 at Fri Apr 26 12:56:00 2013at会进入交互式输入状态(提示符为at>),此时输入要执行的命令echo 1111,最后用Ctrl+D(即<eot>,end-of-transmission)结束输入并提交任务。提交成功后返回任务号job 3及预定执行时间。
随后执行atq查看:
atq 3 Fri Apr 26 12:56:00 2013 a root输出确认任务3正在队列中等待,预定于Fri Apr 26 12:56:00 2013执行,队列为a,所有者为root。
这里涉及的at时间表达式是任务排期的核心。在 at 的文档 中可以看到它支持两类计时法:
- 绝对计时法:直接写
hh:mm(如17:20,若时间已过则顺延到次日)、模糊词(midnight深夜、noon中午、teatime下午 4 点)、12 小时制加AM/PM,以及日期格式month day、mm/dd/yy或dd.mm.yy; - 相对计时法:
now + count time-units,时间单位支持minutes、hours、days、weeks,例如5pm+3 days、now + 10 minutes;也可直接用today、tomorrow表述。
多个任务并存时,atq会按序列出全部待执行任务。例如 at.md 文档 中演示了同时存在两个任务的场景:
atq 8 2013-01-06 17:20 a root 7 2013-01-08 17:00 a root可以看到每个任务独占一行,便于逐条核对。
与 at 家族命令的联动:查询、删除、查看内容
atq只是"看",真正的任务管理还需要与at家族其他成员配合,形成完整的生命周期闭环:
1. 删除任务 ——atrm
atrm 的文档 说明其作用是删除待执行任务队列中的指定任务,语法为atrm(选项)(参数),-V显示版本号,参数为要删除的任务号。典型用法是先用atq查出任务号,再精确删除:
atq 2 Mon May 17 08:00:00 2010 a root 1 Sat May 15 17:00:00 2010 a root atrm 2删除后再次执行atq,任务2已从列表消失,剩余任务不受影响:
atq 8 2013-01-06 17:20 a root 7 2013-01-08 17:00 a root atrm 7 atq 8 2013-01-06 17:20 a root2. 查看任务内容 ——at -c
如果只想确认某个任务的执行脚本内容,可用at -c 任务号查看,输出中会包含任务执行环境(如umask)与实际要执行的命令,例如:
at -c 8 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 umask 22 date >/root/2013.log3. 错峰执行 ——batch
如果任务不要求精确时刻,只希望"系统不繁忙时执行",可用batch命令(batch.md),其用法与at相似,提交后同样会返回任务号,并可通过atq -q b单独查看 batch 队列:
batch at> echo 1234 at> <EOT> job 5 at Sun Apr 28 08:49:00 2013综上,at/batch负责创建任务,atq负责查询队列,atrm负责按任务号删除,at -c负责查看脚本内容,四者配合即可完成对一次性定时任务的完整管控。
ZeroTermux 中手册的呈现方式与源码佐证
上述命令手册并非外部网络文档,而是 ZeroTermux 应用内置的离线 Markdown 资源:全部命令速查文档以命令名.md的形式存放在app/src/main/assets/cmd/目录,涵盖at.md、atq.md、atrm.md、batch.md以及数百个常用命令文档。
从源码可以印证这一机制:CommandDialog.java 中:
initData()(约 L102-L111)通过assetManager.list("cmd")枚举assets/cmd目录下的全部文档文件名,构建命令列表,并在搜索框输入时按名称过滤(约 L122-L177),方便快速检索到atq等目标命令;showCmdDetail()(约 L249-L262)使用assetManager.open("cmd/" + 命令名)读取对应 Markdown 文档,交给 CommonMark 解析器(org.commonmark.parser.Parser)解析为 HTML,再渲染到 WebView 中展示。
这意味着在 ZeroTermux 中查看atq用法无需联网:打开命令手册对话框,搜索 "atq" 即可直接阅读本篇文章所依据的原文内容,文中的语法、选项与实例均可在终端中照搬验证。由于终端本身就是完整的 Linux 运行环境(ZeroTermux 基于 Termux 的包管理器体系提供 coreutils 等基础工具),atq是否可用取决于当前环境是否安装了at软件包,未安装时可通过包管理器补充安装后再使用。
注意事项与使用建议
- 权限范围:
atq只显示当前用户的 at 任务列表,查看其他用户的任务需要相应权限; - 任务号唯一性:
atrm删除任务时必须以atq输出的任务号为准,删除后任务号不会复用给新任务,误删无法恢复; - 时区与时刻:
at排期遵循终端所在时区,跨时区环境(如远端 Android 设备)核对atq输出时间时需注意时区换算; - 离线手册优势:ZeroTermux 将
atq等文档内置为离线资源,即使设备无网络也能随时查阅,配合终端实操是学习at任务调度最快的方式。
- 移动开发
- 开发工具
【免费下载链接】ZeroTermux
相关推荐
Linux at 命令详解:一次性定时任务调度与 atq/atrm 任务队列管理
Linux at 命令详解:一次性定时任务调度与 atq/atrm 任务队列管理 at 是 Linux 系统中用于 在指定时间执行一次性任务 的计划任务工具,它
文档教程Linux atq 命令详解:查看 at 定时任务列表的完整指南(linux-command 项目)
Linux atq 命令详解:查看 at 定时任务列表的完整指南(linux command 项目) 本篇指南以 linux command 开源仓库中的 at
文档教程如何为 Koog Kotlin 代理定义自定义工具并让代理自主调用(@Tool、@LLMDescription 与 ToolRegistry)
如何为 Koog Kotlin 代理定义自定义工具并让代理自主调用(@Tool、@LLMDescription 与 ToolRegistry) 在 agents
移动开发开发工具
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考