at命令用于linux中安排一次性定时任务,需先安装at包(如yum install at或apt install at)、启动并启用atd服务(systemctl enable --now atd),再通过at加时间格式提交任务,支持交互输入或管道方式,用atq查看、atrm删除任务。

at 命令用于在 Linux 中安排一次性执行的命令或脚本,适合不需要重复运行、只在指定时间点触发的任务(比如凌晨两点备份一次、下班前发送提醒邮件)。
确认 at 服务已启用并运行
at 依赖后台服务 atd,若未启动则任务不会执行:
- 检查状态:
systemctl status atd - 启用并启动:
sudo systemctl enable --now atd - 部分系统(如某些最小化安装的 CentOS/RHEL)可能默认未安装,需先运行:
sudo yum install at或sudo apt install at
基本用法:输入命令后设置时间
运行 at 后会进入交互式输入模式,输入要执行的命令,最后按 Ctrl+D 结束:
- 示例:明天上午 9:30 关机
echo "shutdown -h now" | at 9:30 tomorrow - 或交互方式:
at 2:00 PM + 2 days→ 输入echo "done" > /tmp/at_test→Ctrl+D - 支持的时间格式灵活:
noon、midnight、teatime(4pm)、10am Jul 15、now + 30 minutes
查看、删除已提交的任务
每个用户只能管理自己的 at 任务:
- 列出当前用户的待执行任务:
atq(显示任务号、时间、队列、用户名) - 删除某任务(假设任务号是 12):
atrm 12 - 查看某任务具体内容(需 root 权限或任务属主):
at -c 12
注意事项与常见问题
at 的行为受环境和权限限制,容易出错:
- 默认使用提交时的 shell 环境,但
PATH可能较窄(常不含/usr/local/bin),建议写绝对路径(如/bin/echo) - 任务运行时无终端(tty),所以交互式命令(如需要输入密码)会失败;重定向输出可帮助调试:
at 10:00 /home/user/backup.sh > /tmp/backup.log 2>&1<br> EOF
- 普通用户能否使用 at,由
/etc/at.allow和/etc/at.deny控制;若两个文件都不存在,只有 root 可用;若仅存在at.allow,则只允许其中列出的用户使用











