woo*_*ngs 21 unix linux bash process kill-process
当我从我的bash脚本启动我的tcp服务器时,我需要在当前实例开始侦听之前杀死前一个实例(可能仍在侦听同一个端口).
我可以用类似的东西pkill <previous_pid>.如果我理解正确,这只是发送SIGTERM到目标pid.当pkill返回时,目标进程可能仍然活着.有没有办法让它pkill等到它退出?
Aar*_*lla 27
不,你能做的就是写一个循环kill -0 $PID.如果此调用失败($? -ne 0),则进程已终止:
while kill -0 $PID; do
sleep 1
done
Run Code Online (Sandbox Code Playgroud)
有关:
使用wait(bash内置)等待进程完成:
pkill <previous_pid>
wait <previous_pid>
Run Code Online (Sandbox Code Playgroud)