linux中at命令详解
at
命令是 Linux 中用于在指定时间执行一次性任务的工具,非常适合安排一次性的延迟任务,比如“在半小时后关机”、“明天中午执行脚本”等。
🧰 基本语法
at [时间]
执行命令后会进入一个交互式的提示符,让你输入需要执行的命令,输入完后按 Ctrl + D
结束输入并提交任务。
🕒 时间格式
at
支持多种灵活的时间格式,以下是常用示例:
格式 | 示例 | 含义 |
---|---|---|
HH:MM | at 14:30 | 今天 14:30 执行 |
now + 时间单位 | at now + 10 minutes | 10 分钟后执行 |
midnight / noon | at midnight / at noon | 凌晨 0 点 / 中午 12 点 |
tomorrow | at 9:00 AM tomorrow | 明天早上 9 点 |
日期 + 时间 | at 10:00 04/12/2025 | 2025 年 4 月 12 日 10 点 |
✅ 示例
1. 五分钟后执行命令
at now + 5 minutes
然后输入:
echo "Hello after 5 minutes" >> ~/message.log
按 Ctrl + D
提交。
2. 明天下午 3 点执行脚本
at 3:00 PM tomorrow
然后输入:
/home/user/myscript.sh
按 Ctrl + D
结束。
📋 查看已安排的任务
1. 使用 atq
获取任务 ID:
atq
例如输出:
3 2025-04-12 14:30 a user
这个任务的 ID 是 3
。
2. 找到对应的任务文件:
可以这样查找:
ls -l /var/spool/at
或在某些系统中:
ls -l /var/spool/cron/atjobs
任务文件的名字可能是个随机字符串,和任务 ID 没直接关系。
❌ 删除已安排的任务
atrm <任务编号>
例如:
atrm 2
🔧 配置文件和权限控制
-
/etc/at.allow
:允许使用at
的用户列表 -
/etc/at.deny
:禁止使用at
的用户列表
优先级:at.allow
> at.deny
如果两个都不存在,则只有 root 可以使用 at
。
📝 注意事项
-
at
任务运行时是非交互式的 shell 环境,所以请使用绝对路径,并考虑环境变量问题。 -
输出(标准输出和错误输出)默认会通过邮件发送给任务所属用户(需要配置
mail
)。