补充说明
atd 是 at 工具的守护进程,负责从队列中取出到达执行时间的任务并运行。与 cron 的周期性调度不同,at 只执行一次,适合“20 分钟后重启服务”“今晚备份一次”这类临时安排。
任务默认存放在 /var/spool/cron/atjobs,执行输出通过邮件发给提交者(未配置 MTA 时会丢失,可在命令中自行重定向)。atd 由 at 软件包提供,Debian/Ubuntu 与 RHEL 系的服务名都叫 atd。
语法
atd [选项]
选项
-l 负载值:系统负载高于该值时暂不启动任务,默认 1.5-b 秒数:批处理队列的检查间隔,默认 60 秒-d:调试模式-f:前台运行,便于观察日志
实例
# 查看守护进程状态
systemctl status atd
# 启动并设为开机自启
sudo systemctl enable --now atd
# 提交一个 10 分钟后执行的任务
echo 'logger "at job done"' | at now + 10 minutes
# 查看待执行任务
atq
# 删除编号为 3 的任务
atrm 3
# 立即执行排队的批处理任务(batch 队列)
batch <<< 'tar czf /tmp/etc.tgz /etc'
若系统负载长期高于 -l 阈值,任务会一直等待;排查时先看 systemctl status atd 与系统负载。