终止进程并等待进程退出

时间:2013-07-27 05:48:48

标签: linux bash unix process kill-process

当我从bash脚本启动tcp服务器时,我需要在当前实例开始侦听之前终止前一个实例(可能仍在侦听同一个端口)。

我可以使用像pkill <previous_pid>这样的东西。如果我理解正确,这只会将SIGTERM发送到目标pid。当pkill返回时,目标进程可能仍然存在。有没有办法让pkill等到它退出?

2 个答案:

答案 0 :(得分:20)

没有。你可以做的是用kill -0 $PID写一个循环。如果此调用失败($? -ne 0),则该过程已终止:

while kill -0 $PID; do 
    sleep 1
done

(代码为qbolec的荣誉)

相关:

答案 1 :(得分:4)

使用wait(bash builtin)等待进程完成:

 pkill <previous_pid>
 wait <previous_pid>