我尝试在linux中使用kill命令终止进程。 (不使用-9作为参数)
我需要确保该过程真的被杀死了。 据我所知,kill命令是异步运行的,它可能需要一些时间才能完成。
我需要确保,在我执行kill之后,我的进程已经使用bash死了
你能帮忙吗?
谢谢!
答案 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
会向流程发送SIGTERM
。 SIGTERM
上的默认操作是终止进程,但进程可以设置不同的信号处理程序,并且进程可能不会终止。
我认为您需要的是一种查找过程是否处理过信号的方法。这可以使用ps s $PID
完成。如果这显示0
s为挂起掩码,则进程已收到信号并对其进行处理。