如何像java线程一样并行运行shell脚本

时间:2015-01-29 12:09:10

标签: shell unix sh

您好我有一个脚本mainscript.sh 在主脚本中,我有多个智能脚本。

child1.sh  
child2.sh  
child3.sh 
rm -rf /home/bdata/batch/* 

我正在运行我的mainscript.sh,它将并行运行所有子作业。

mainscript.sh

child1.sh &
child2.sh &
child3.sh &
rm -rf /home/bdata/batch/*   

第4个语句在完成所有执行之前运行。

在完成3个并行的脚本之后,有什么方法可以控制最后一行的执行。

2 个答案:

答案 0 :(得分:2)

这是一个解决方案:

#!/bin/bash
./child1.sh &
./child2.sh & 
./child3.sh &

使用./或脚本的完整路径。

如果命令由控制操作符&终止,那么shell 在子shell中在后台执行命令。外壳确实如此 不要等待命令完成,返回状态为0.如果要在退出脚本之前执行所有子脚本,则在末尾添加wait(如下面的@Mark Setchell所述)。

答案 1 :(得分:2)

简单地告诉shell等到孩子都死了:

child1.sh &
child2.sh &
child3.sh &
wait
rm -rf /home/bdata/batch/*