在后台运行可执行文件并等待其结束(shell脚本)

时间:2015-03-26 02:53:35

标签: python shell

我是shell脚本的新手,我想要做的是,我需要运行我的可执行文件的4个实例,然后等待它们结束运行我的最终脚本现在我拥有的是这样的:

#!/bin/bash
g++ -std=c++110x BC-Boost.cpp -o bc-boost   
for i in 1 2 3 4
do
python initialization.py -c $i
./bc-boost $i
done
python ploting.py

问题是;现在我的脚本按顺序运行initialization.py, ./bc-boost我希望将它们运行到后台,并在完成上述所有代码时以某种方式告诉ploting.py运行! (而且我不想去线程......)

1 个答案:

答案 0 :(得分:4)

我会选择这样的事情:

#!/bin/bash
g++ -std=c++110x BC-Boost.cpp -o bc-boost   
for i in 1 2 3 4 ; do
    ( python initialization.py -c $i ; ./bc-boost $i ) &
done
for i in 1 2 3 4 ; do
    wait
done    
python ploting.py

这可以通过以下测试程序看出:

#!/bin/bash
for i in 1 2 3 4 ; do
    (
        echo "$i start $(date)"
        sleep $i
        sleep $i
        echo "$i   end $(date)"
    ) &
done
for i in 1 2 3 4 ; do
    wait
done
echo all done

输出:

1 start Thu, Mar 26, 2015 11:21:00 AM
2 start Thu, Mar 26, 2015 11:21:00 AM
3 start Thu, Mar 26, 2015 11:21:00 AM
4 start Thu, Mar 26, 2015 11:21:00 AM
1   end Thu, Mar 26, 2015 11:21:02 AM
2   end Thu, Mar 26, 2015 11:21:04 AM
3   end Thu, Mar 26, 2015 11:21:06 AM
4   end Thu, Mar 26, 2015 11:21:08 AM
all done