ins*_*ity 2 linux bash process
我想使用bash并行运行多个进程.我做了以下事情:
./proc sth1 & ./proc sth2 & ./proc sth3 & ... & ./proc sthN &
上述问题是它立即结束.所以,如果我这样做:
time (./proc sth1 & ... & ./proc sthN &)我回来了0.
我想运行上面的命令,但我希望它在最后一个进程完成时停止.因此,如果./proc sthX需要10秒,而所有其他进程需要1秒.我想等待10秒,直到上面的命令返回.有没有办法做到这一点?
wait最后打电话.引用bash手册作业控制内置:
wait [jobspec or pid ...]等到每个进程ID pid或作业规范jobspec指定的子进程退出并返回等待的最后一个命令的退出状态.如果给出了作业规范,则等待作业中的所有进程.如果未给出参数,则等待所有当前活动的子进程,并且返回状态为零.如果jobspec和pid都没有指定shell的活动子进程,则返回状态为127.
一个例子:
#!/bin/bash
function test {
time=$(( RANDOM % 10 ))
echo "Sleeping for $time"
sleep "$time"
echo "Slept for $time"
}
time (
test & test & test & test & test & test &
wait
echo "Finished all."
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2787 次 |
| 最近记录: |