Linux 终止进程并等待该进程退出
当我从bash脚本启动tcp服务器时,我需要在当前实例开始侦听之前杀死前一个实例(可能仍在侦听同一端口) 我可以使用类似于Linux 终止进程并等待该进程退出,linux,bash,unix,process,kill-process,Linux,Bash,Unix,Process,Kill Process,当我从bash脚本启动tcp服务器时,我需要在当前实例开始侦听之前杀死前一个实例(可能仍在侦听同一端口) 我可以使用类似于pkill的东西。如果我理解正确,这只会将SIGTERM发送到目标pid。当pkill返回时,目标进程可能仍处于活动状态。有没有办法让pkill等待它退出?使用wait(bash内置)等待进程完成: pkill <previous_pid> wait <previous_pid> pkill 等待 否。您可以使用kill-0$PID编写一个循环。
pkill
的东西。如果我理解正确,这只会将SIGTERM
发送到目标pid。当pkill
返回时,目标进程可能仍处于活动状态。有没有办法让pkill等待它退出?使用wait
(bash内置)等待进程完成:
pkill <previous_pid>
wait <previous_pid>
pkill
等待
否。您可以使用kill-0$PID
编写一个循环。如果此调用失败($?-ne 0
),则进程已终止:
while kill -0 $PID; do
sleep 1
done
(代码的荣誉)
相关的:
而ps-p$nPid;做睡眠1;完成代码>−1:wait
仅适用于当前shell的子进程,不适用于任意进程。没有通用的内置机制。为什么不使用kill
?将其更改为while$(kill-0$PID 2>/dev/null);执行
忽略进程终止后的“无此进程”消息