shell脚本中并行执行脚本
时间: 2025-02-13 19:22:29 浏览: 69
### 实现 Shell 脚本中的并行执行
在 Shell 中,默认情况下命令是以串行方式执行的,即前一条命令完成后才开始下一条命令。为了提高效率,在某些场景下可能希望多个任务能够并发执行。
#### 使用 `&` 符号启动后台进程
当需要让某个命令作为子进程在后台运行而不阻塞后续指令时,可以在该命令后面加上 `&` 字符。这样可以让当前shell继续执行后面的其他命令而无需等待此命令完成[^1]。
```bash
command1 &
command2 &
```
上述代码片段展示了两个命令被发送到后台立即执行的方式。
#### 利用 `wait` 命令同步所有后台作业
如果存在一组应该同时启动但在全部结束后再继续下一步逻辑的任务,则可以先将这些任务放入后台(`&`),之后调用 `wait` 来暂停直到所有的背景工作结束为止。
```bash
task1.sh &
pid1=$!
task2.sh &
pid2=$!
wait $pid1 $pid2
echo "All tasks have completed."
```
这里定义了变量存储每个后台任务的PID(进程ID),以便稍后可以通过它们来监视状态或传递给 `wait` 函数确保所有指定的工作已完成后再打印消息。
#### 结合 GNU Parallel 工具进行高级并行化操作
对于更加复杂的多线程需求,还可以借助像GNU parallel这样的工具来进行批量处理。它允许用户轻松地分配大量独立的小型计算单元至不同的CPU核心甚至跨网络节点分发负载[^2]。
```bash
parallel -P 4 ssh {} 'your_command' ::: host1 host2 host3 host4
```
这段脚本利用 `-P` 参数指定了最大并发数为4,并通过 `{}` 占位符动态替换成实际的目标机器名称列表里的成员去远程登录执行特定的操作。
阅读全文
相关推荐

















