首页 > Sysadmin > 正文

Linux 查看排队任务的方法:at、cron 与 systemd 定时器

huyuanwen 2026-11-04 Sysadmin

草稿待审;atq / atd 在 WSL Ubuntu 24.04 实测(安装 at 包验证后卸载还原);crontab -l 与 systemctl list-timers 在 WSL 实测;cron 调度语法与 @reboot 等特殊字符串基于 man page 文档核查。

TL;DR:一次性延后任务用 atq,周期性任务用 crontab -l,systemd 定时器用 systemctl list-timers;三者互不包含,排查时要分别查。

Linux 上”排队的任务”分三类:一次性延后执行(at/batch)、周期性定时(cron)、systemd 定时器(timer unit)。三者的查看命令不同,混用会漏看。

—

1. atq:查看 at / batch 队列

at 用于延后执行命令,batch 在系统负载低时执行。atq 列出 pending jobs;root 查看所有用户,普通用户只看自己的。输出格式为 job number、date、hour、queue、username[1]。

# 查看队列
atq

# 等价写法
at -l

# 删除某个作业
atrm 3

WSL 实测:空队列 atq 返回 0 且无输出;创建一个 at now + 1 minute 作业后 atq 显示 1 Wed Nov 4 23:23:00 2026 a root;atrm 1 删除成功。atd 服务必须运行:systemctl is-active atd 应返回 active。Ubuntu 安装 at 包后 atd 自动 enable。

2. crontab -l:查看定时任务

crontab -l 列出当前用户的定时表;查看 root 的用 sudo crontab -l。系统级任务位于 /etc/crontab、/etc/cron.d/*、/etc/cron.{hourly,daily,weekly,monthly}[2]。

# 当前用户
crontab -l

# root 的
sudo crontab -l

# 系统级 cron.d
ls /etc/cron.d/

WSL 实测:root 无 crontab 时输出 no crontab for root,退出码 0;/etc/cron.d/ 下有 e2scrub_all 等条目。

调度语法为 5 个时间字段加命令,还支持 @reboot、@daily 等特殊字符串[3]。

3. systemctl list-timers:查看 systemd 定时器

systemd timer unit 替代部分 cron 场景。list-timers 按下次触发时间排序,显示 NEXT/LEFT/LAST/PASSED/UNIT/ACTIVATES[4]。

# 默认只显示已激活的 timer
systemctl list-timers

# 包含未激活的
systemctl list-timers --all

WSL 实测:系统有 8 个 timer(apt-daily、logrotate、man-db 等)。

4. 排错速查表

现象 常见原因 处理
atq 无输出但任务未执行 atd 未运行或作业被 atrm systemctl status atd,再 atq
crontab -l 提示 no crontab 该用户未安装定时表 检查 /etc/cron.d/ 与 /etc/crontab
cron 作业不触发 PATH/用户环境不同 journalctl -u cron -n 50 看执行日志
timer 不触发 unit 未 enable 或条件不满足 systemctl status <name>.timer
systemctl list-timers 为空 无 timer unit 或未加载 systemctl list-unit-files --type=timer

5. 局限性

  • at/batch 需安装 at 包;WSL 实测安装后 atd active,已卸载还原,生产环境需自行安装。
  • cron 作业的执行环境(PATH、用户)与交互 shell 不同,排查用 journalctl -u cron。
  • systemd timer 的 OnCalendar 语法与 cron 不同,迁移需重写表达式。
  • 非 systemd 发行版无 systemctl list-timers,需用 service 或 /etc/init.d/。

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测并核对其在 Debian 系与通用发行版的文档口径。