脚本被杀死时退出bash后台作业

时间:2015-12-10 00:14:31

标签: linux bash

我有一个看起来像这样的脚本:

#!/bin/bash

trap 'kill $(jobs -pr) && exit' SIGINT

# Run script 10 times in the background
for i in `seq 1 10`;
do
    python script.py &
    sleep .05
done
# Wait for result from program
sleep 5

# Cleanup scripts
kill $(jobs -p)

python脚本基本上是针对不同程序的压力测试,我希望其中10个同时运行。他们保持这种状态5秒,所以我可以观察发生了什么,然后他们都被杀死了。

问题是,如果我在完成之前运行脚本而没有CTRL + C,那么后台python作业会一直存在并继续运行。当这个脚本退出时,我希望它们全部退出,无论它是正常退出还是被杀死。我四处寻找,但没有找到太多。

我已尝试在this answer中发布的解决方案,但至少对我来说,$(jobs -p)在从trap调用时不返回任何进程,因此这些解决方案都不起作用。编辑包含陷阱代码。

0 个答案:

没有答案