连续运行批处理nohup脚本

时间:2017-08-05 23:51:01

标签: bash asynchronous nohup

我有一个“父”python脚本script_1.py,...,script_n.py的集合,每个脚本都使用os.system和nohup异步启动一堆不同的“子”python脚本。每个父脚本还将其子项的PID保存到/tmp/task_1/kill.sh,...,/tmp/task_n/kill.sh

我希望连续运行所有 n 父脚本,确保父 i-1 的所有异步子项在运行父 i之前已完成执行

我的尝试(对于两个父母)是运行bash脚本:

#!/bin/bash

python script_1.py &
wait
python script_2.py &

但是,根据script_1.py,这会启动script_2.pyps -ef | grep python的所有孩子。

仅供参考:每个kill.sh文件的内容都是

形式
#!/bin/sh
kill 36713
kill 36715
etc..

1 个答案:

答案 0 :(得分:0)

您希望在第一次等待完成后等待所有孩子仍在运行 主脚本完成后,我假设文件/tmp/task_1/kill.sh已完成。你可以找到pid的 sed -n'/ kill / s / kill // p'/ tmp /task_1/kill.sh 你想等待这些:

#!/bin/bash
python script_1.py &
wait
wait $(sed -n '/kill/ s/kill //p' /tmp/task_1/kill.sh)
python script_2.py &

你也可以循环测试:

scriptnr=1
while test -x "script_${scriptnr}.py"; do
   python script_${scriptnr}.py &
   wait
   wait $(sed -n '/kill/ s/kill //p' /tmp/task_${scriptnr}/kill.sh)
   ((scriptnr++))
done