我想編寫一個shell腳本來執行一些命令並等待它們全部終止。如何從shell腳本執行以下操作(同時運行多個命令並等待它們)?
我想我會做的就是使用
cmd1 &
cmd2 &
cmd3 &
....
等
但我不知道是如何等待他們終止。
有什麼想法?
我想編寫一個shell腳本來執行一些命令並等待它們全部終止。如何從shell腳本執行以下操作(同時運行多個命令並等待它們)?
我想我會做的就是使用
cmd1 &
cmd2 &
cmd3 &
....
等
但我不知道是如何等待他們終止。
有什麼想法?
這個問題有你的問題的答案。 :)
通過調用wait
命令,您可以簡單地爲所有正在運行的作業wait
。
只需使用wait
命令不帶任何ARGS:
cmd1 &
cmd2 &
cmd3 &
wait
這將使bash的等待所有未完成的兒童。只要您還沒有其他需要繼續的後臺任務,就會工作。
這個例子似乎有效。
[stou$ ~]$ (sleep 1 ; echo 1) & (sleep 4 ; echo 4) & (sleep 3 ; echo 3)& wait; echo done
[1] 13651
[2] 13652
[3] 13653
1
[1] Done (sleep 1; echo 1)
3
4
[2]- Done (sleep 4; echo 4)
[3]+ Done (sleep 3; echo 3)
done
[stou$ ~]$
「;」不會爲我工作,因爲我希望他們都在後臺一起運行。有點像分叉和等待你分叉終止的所有過程。 – kloop