Linux 命令速查
系统管理 man atd

atd

运行一次性定时任务的 at 守护进程

返回

补充说明

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 与系统负载。

参考链接