我有一个看起来像这样的脚本:
#!/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
调用时不返回任何进程,因此这些解决方案都不起作用。编辑包含陷阱代码。