一个bash脚本demo.sh
#!/bin/bash
./prog1 &
./prog2 &
wait
使用timeout -s 9 5m demo.sh
运行脚本。
脚本demo.sh过去没有&
和wait
。我想知道timeout
是否会在超时时杀死prog1和prog2。如何确保所有子流程都被终止?
当您终止由demo.sh
(除非您执行类似disown $PID
的操作)。
您可以通过kill -0
:确保这种情况发生
./prog1 &
echo P1=$!
./prog2 &
echo P2=$!
然后可以kill -0 ${PID1}
和kill -0 ${PID2}
,并确保命令返回退出状态1
,这意味着"找不到进程"