batch命令

batch 命令 #

batch命令用于在系统负载较低时执行命令。它类似于at命令,但不是在指定的时间执行,而是在系统负载降至特定阈值以下时执行。

语法 #

batch [选项] [时间]

常用选项 #

选项 描述
-f 文件 从指定文件而不是标准输入读取命令
-q 队列 使用指定的队列字母
-m 作业完成后发送邮件给用户
-v 显示作业执行的时间

负载阈值 #

batch命令会在系统平均负载降至特定阈值以下时执行作业。默认阈值通常为 0.8,但可以在系统配置中修改。

使用方法 #

at命令类似,batch命令会打开一个交互式会话,让用户输入要执行的命令。输入完成后,按Ctrl+D结束输入。

$ batch
warning: commands will be executed using /bin/sh
at> echo "System load is now acceptable" > /tmp/batch_test
at> date >> /tmp/batch_test
at>

at> ^D job 15 at Mon Jul 20 14:30:00 2025


## 常见用法

### 交互式提交批处理作业

```bash
batch
at> command1
at> command2
at> ^D

从文件提交批处理作业 #

batch -f commands.txt

使用重定向提交批处理作业 #

echo "command1; command2" | batch

查看和管理批处理作业 #

批处理作业使用与at命令相同的队列系统,因此可以使用相同的命令来管理它们:

  • 查看待处理的批处理作业:atq
  • 删除批处理作业:atrm 作业号

与 at 命令的区别 #

特性 at batch
执行时间 在指定的时间执行 在系统负载较低时执行
优先级 按队列和提交时间决定 通常使用’b’队列,优先级较低
适用场景 需要在特定时间执行的任务 资源密集型任务,可以等待系统空闲时执行

相关命令 #

  • at - 在指定时间执行命令
  • atq - 列出待处理的作业
  • atrm - 删除待处理的作业

注意事项 #

  • batch命令实际上是at -q b now的别名
  • 批处理作业会在系统负载允许时尽快执行,而不是在特定时间
  • 如果系统负载持续高于阈值,批处理作业可能会长时间等待
  • 批处理作业的环境变量与提交时的环境变量相同