首页/系统/Linux 运维命令速查/batch 低负载时才执行的任务
定时任务与计划50 条

batch 低负载时才执行的任务

batch 把任务交给 at 的批处理队列:只有系统负载低于阈值(atd 判断,通常 <1.5)才启动;适合编译、索引、大压缩这类可等待的重活。

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

命令是干什么的

batch 把任务交给 at 服务的批处理队列:任务不按指定时刻执行,而是等系统负载降到阈值以下才由 atd 启动,它回答的是等机器闲下来再跑这个问题。编译、重建索引、大文件压缩这类可等待的重活都适合它。任务提交到 b 队列,与 at 提交的 a 队列分开管理,用 atq 或 at -l 能看到,删除同样用 atrm。判断依据是 atd 读取的一分钟平均负载,阈值通常记为 1.5。

基本信息

适用平台Linux,属于 at 软件包,需要 atd 守护进程在运行
语法batch 回车后逐行输入命令,结束时按输入结束符;batch -f 脚本 直接提交文件
常用选项-f 指定脚本文件、-m 无论有无输出都发邮件、-q 指定队列
队列归属batch 提交到 b 队列,at 提交到 a 队列,atq 会显示队列字母
触发条件atd 判断系统一分钟平均负载低于阈值时启动,通常为 1.5 以下
权限要求普通用户可用,但可能受 at 的名单文件限制

典型使用场景

  • 重建全文索引、生成报表、批量转码这类重活,等业务低谷再跑
  • 大文件压缩与归档,避开白天磁盘与 CPU 的双高峰
  • 一次性数据迁移或校验任务,不关心具体时刻只关心不影响线上
  • 与 nice、ionice 组合,启动后再降一级优先级,做成温和的后台任务
  • 临时补跑历史批处理,避免在高峰时段继续加压
  • 给周期性任务做兜底:到点时机器太忙就先进队列等着

示例

示例
batch -f /opt/scripts/reindex.sh     # 直接提交脚本文件
batch <<'EOF'
ionice -c3 nice -n 19 /opt/app/rebuild-index.sh
EOF
batch -m -f /opt/scripts/report.sh   # 无论有没有输出都发邮件通知
echo '/opt/scripts/vacuum.sh' | batch # 从管道提交单条命令
atq                                  # batch 任务同样列在 atq 里,队列字母为 b
at -c 3 | tail -n 10                 # 提交后核对任务内容
atrm 3                               # 不再需要时按编号删除任务

batch 与 cron 的差异

对比项batch 提交的任务cron 定时任务
触发方式负载驱动,等系统负载降下来才启动时间驱动,到点就启动
时间承诺没有固定执行时间,可能长时间排队有明确执行时刻,用表达式描述
查看方式提交到 b 队列,用 atq 或 at -l 查看用 crontab -l 查看,与 at 队列独立
适合的任务可等待的重活,如编译、索引、归档必须准时的巡检、报表、日志轮转
删除方式atrm 任务编号crontab -e 删掉对应行
负载阈值看的是全局一分钟平均负载,多核机器上负载 1.5 很容易被超过,重活可能长期排队;有明确时限的任务不要只丢进 batch,应规划固定窗口或交给 cron。
atd 只看全局负载,不区分是 CPU 繁忙还是磁盘等待。大量处于不可中断状态的进程同样会把负载顶高,此时 CPU 可能空闲但 batch 依旧不启动。
任务输出默认通过邮件发给提交者,机器上没有邮件服务时输出全部丢弃;批处理脚本应自行把日志重定向到文件,否则失败也无声无息。

易错点

  • 把 batch 当定时任务用:它不承诺执行时刻,有 SLA 的任务会无限期延后,最终表现为任务根本没跑
  • 脚本依赖交互式环境:batch 任务不继承登录 shell 的完整环境,PATH 很短,相对路径与裸命令名都会失败
  • 输出依赖邮件而机器上没有邮件服务:失败信息全部丢失,任务静默失败很久才被发现,脚本里必须自己写日志
  • atd 未运行或提交账号不在名单里:提交当场报错或被拒绝,排查前先确认服务状态与名单配置
  • 重活没有配套降低优先级:即使等到负载下降才启动,启动之后仍可能把负载重新顶高,配合 nice 与 ionice 更稳妥

数据来源与参考

  • man 1 batch
  • man 8 atd

相关工具

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