0
bash腳本demo.sh
殺bash腳本與等待命令
#!/bin/bash ./prog1 & ./prog2 & wait
使用timeout -s 9 5m demo.sh
運行該腳本。
腳本demo.sh以前沒有&
和wait
。我想知道當超時發生時timeout
是否會殺死prog1和prog2。我如何確保所有子流程都會被殺死?
bash腳本demo.sh
殺bash腳本與等待命令
#!/bin/bash ./prog1 & ./prog2 & wait
使用timeout -s 9 5m demo.sh
運行該腳本。
腳本demo.sh以前沒有&
和wait
。我想知道當超時發生時timeout
是否會殺死prog1和prog2。我如何確保所有子流程都會被殺死?
當你殺死由 demo.sh
開始的shell進程(除非你做了類似disown $PID
的事情)時,分叉的作業將被殺死。
可以確保這種情況與kill -0
:
./prog1 &
echo P1=$!
./prog2 &
echo P2=$!
然後你可以kill -0 ${PID1}
和kill -0 ${PID2}
並確保兩個 命令,退出狀態1
,這意味着「找不到過程」