Linux 终止进程并等待该进程退出

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编写一个循环。

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

我可以使用类似于
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
(代码的荣誉)

相关的:


你能在现场提出同样的问题吗?这是我的解决方案,也适用于服务:。为什么这是“离题”?这是一个与bash编程语言相关的编程问题,基本需求到目前为止还没有得到解决,这是一个小问题。我猜有几千个脚本实现了这个简单的特性:kill并等待进程终止。如何改变现状?如何达到目标?wait说“不是这个外壳的pid”,我必须
而ps-p$nPid;做睡眠1;完成−1:
wait
仅适用于当前shell的子进程,不适用于任意进程。没有通用的内置机制。为什么不使用
kill
?将其更改为
while$(kill-0$PID 2>/dev/null);执行
忽略进程终止后的“无此进程”消息