如何确保进程被杀? (使用kill命令)

时间:2011-05-03 07:23:51

标签: linux process kill

我尝试在linux中使用kill命令终止进程。 (不使用-9作为参数)

我需要确保该过程真的被杀死了。 据我所知,kill命令是异步运行的,它可能需要一些时间才能完成。

我需要确保,在我执行kill之后,我的进程已经使用bash死了

你能帮忙吗?

谢谢!

3 个答案:

答案 0 :(得分:4)

使用信号0杀死进程将检查进程是否仍在运行,并且实际上并未将其终止。只需检查返回代码。

答案 1 :(得分:4)

假设$PID拥有您的流程的pid,您可以执行以下操作:

kill "$PID"

while [ $(kill -0 "$PID") ]; do
  sleep 1
done

echo "Process is killed"

答案 2 :(得分:0)

kill用于向进程发送信号。它不一定终止该过程(但通常会这样做)。没有明确提及信号的kill会向流程发送SIGTERMSIGTERM上的默认操作是终止进程,但进程可以设置不同的信号处理程序,并且进程可能不会终止。

我认为您需要的是一种查找过程是否处理过信号的方法。这可以使用ps s $PID完成。如果这显示0 s为挂起掩码,则进程已收到信号并对其进行处理。