2011-05-03 34 views
1

我尝试在linux中使用kill命令终止一个进程。 (不使用-9作为参数)如何确保一个进程被杀害? (使用kill命令)

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

我需要确保,我跑了杀死我的过程已经使用bash

能否请您协助死后?

谢谢!

回答

4

用信号0杀死进程将检查进程是否仍在运行,而不是实际上杀死进程。只需检查返回代码。

4

假设$PID握着你的进程的PID,你可以做这样的事情:

kill "$PID" 

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

echo "Process is killed" 
0

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

什么,我认为你需要,是一种方法来查找过程是否处理过信号与否。这可以使用ps s $PID完成。如果这显示0 s作为待定掩码,则该过程已收到信号并对其进行处理。