atd服务未启动是at任务不执行的最常见原因,须按“是否运行→为何没启→启了为何挂”三层排查:先用systemctl status atd确认active(running),再查ps aux | grep '[a]td'和journalctl -u atd;未启用则sudo systemctl enable --now atd;检查/var/spool/at权限是否为755且属主daemon:daemon;最后验证/etc/at.allow或at.deny访问控制。

atd 服务未启动是 at 任务不执行的最常见原因,排查要从“是否运行”“为何没启”“启了为何挂”三层递进,不用猜,靠命令验证。
确认 atd 是否真在运行
别信提交成功,先看守护进程:
- 运行 systemctl status atd —— 正常应显示 active (running);若为 inactive (dead) 或 failed,说明根本没跑
- 补查进程是否存在:ps aux | grep '[a]td'(方括号避免匹配 grep 自身)
- 检查日志有无启动痕迹:journalctl -u atd -n 20 --no-pager,重点找 “Started AT daemon” 或报错行
检查开机自启与启动方式是否正确
很多系统默认不启用 atd,手动启动也容易出错:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 确认是否设为开机自启:systemctl is-enabled atd,返回 enabled 才算可靠
- 若未启用,执行:sudo systemctl enable --now atd(
--now同时启动) - 警惕手动执行
atd命令:它会前台运行,关终端即退出;必须用systemctl start atd才后台常驻
验证 /var/spool/at 目录权限是否合规
atd 启动时若发现队列目录权限不对,会静默拒绝加载任务,状态仍显示 running,但实际不干活:
- 运行 ls -ld /var/spool/at —— 正常应为 drwxr-xr-x(755),属主属组通常是 daemon:daemon(Debian/Ubuntu)或 at:at(部分 RHEL 变体)
- 禁止 chmod 777 或 chown root:root,否则 atd 直接跳过该队列
- 若权限异常,按系统惯例修复:sudo chown daemon:daemon /var/spool/at && sudo chmod 755 /var/spool/at
排除访问控制与发行版限制
任务提交失败不等于 atd 挂了,可能是用户被拦在门外:
- 检查 /etc/at.allow 和 /etc/at.deny:若存在
at.allow,只允许其中列出的用户使用;若只有at.deny,则除所列用户外都可用;两者皆无时,仅 root 默认可用 - 普通用户提交失败时,运行 atq —— 若报错 You are not authorized to use at,就是权限文件问题,不是 atd 故障
- Ubuntu 22.04+、Alpine 等默认不启用 atd,甚至不预装,需确认
which atd是否存在,再补装或启用










