首页/系统/Linux 运维命令速查/at 常用选项:-f/-q/-m/-t
定时任务与计划50 条

at 常用选项:-f/-q/-m/-t

at 的实用开关:-f 从文件读命令、-q 选队列、-m 强制执行后发邮件、-t 用 [[CC]YY]MMDDhhmm 精确时间、-l/-d 列删任务。

Linux 运维命令速查系统更新于 2026-10-13

at 的常用选项

at 用于提交一次性定时任务,几个开关最实用:-f 从文件读取命令、-q 指定队列、-m 执行后发邮件、-t 用 [[CC]YY]MMDDhhmm 精确指定时间,-l 列出待执行任务、-d 删除任务。它与 cron 的分工很清楚:cron 管重复执行,at 管只跑一次的安排。

基本信息

用途精确控制一次性任务的提交与执行时间
语法at [-f 文件] [-q 队列] [-m] -t 时间
时间写法自然语言(now + 1 hour)与 -t 数字格式均可
配套命令atq 查看待执行队列、atrm 按编号删除

典型使用场景

  • 维护窗口结束后定时恢复服务或切换配置
  • 约定时间点执行一次部署或发版动作
  • 延迟生成报告并在完成后发邮件提醒
  • 用不同队列区分优先级,队列越靠后越让路
  • 下班前提交任务,避免忘记后续操作
  • 演练与测试中模拟未来某个时刻的动作

示例

示例
at -f /opt/scripts/maintenance.sh 03:00        # 从脚本文件读取命令
at -m -f /opt/scripts/report.sh now + 1 hour   # 执行后邮件通知
at -t 202610201430 -f /opt/scripts/deploy.sh   # 指定 2026-10-20 14:30
at -q b -f /opt/scripts/bigjob.sh 23:00        # 放入 b 队列
echo '/opt/app/rotate.sh' | at 02:00           # 管道方式提交单条命令
atq                                            # 列出待执行任务
atrm 12                                        # 按编号删除任务

常用选项

选项作用说明
-f 文件从文件读取命令避免交互输入,便于脚本化
-q 队列指定队列字母a-z 供 at 使用,A-Z 供 batch 使用
-m执行后发邮件即使没有输出也通知
-t 时间精确时间格式MMDDhhmm,跨年要写全 CCYY
-l / -d列出 / 删除任务与 atq、atrm 等价
队列字母 a-z 由 at 使用,A-Z 由 batch 使用;字母越靠后 nice 值越高,也就是在系统繁忙时越容易让路。
-t 的格式是 MMDDhhmm,而不是本地化日期串;年份可以省略,但跨年场景必须写全,否则任务会被排到错误的年份。
at 依赖 atd 服务:服务未运行时提交会失败或任务不执行,排查「任务没跑」时先确认 atd 状态,再看队列里是否还有该任务。
提交后立刻用 atq 确认队列里能看到该任务,是最省事的自查动作:语法错误常在交互层被忽略,而任务其实根本没有入队。
at 任务只在系统运行期间触发,机器关机时错过的任务不会补跑;需要开机后补做的工作属于 anacron 的职责范围。

易错点

  • -t 参数少写年份:任务被排到错误年份,长期不执行且难以察觉
  • 用大写队列提交 at 任务:那是 batch 语义,负载低时才跑,与预期不符
  • 依赖邮件通知却没有可用 MTA:输出静默丢失,误以为任务没执行
  • atd 未运行就以为已提交成功:报错被忽略,事后完全没有执行痕迹

数据来源与参考

  • man 1 at(-f/-q/-m/-t 选项说明)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌