如果kill -9不起作用怎麼辦?

如果kill -9不起作用怎麼辦?

我有一個討厭的進程(在這個例子中,是一個原本應該在 iPhone Simulator 中運行的擱淺進程(現已退出)。

97442 ??         0:00.00 (MyProcess)

我已經嘗試了我能想到的一切,包括

sudo kill -9 97442
sudo kill -HUP 97442

然而,就像烏鴉一樣……這個過程仍然存在。

在這種情況下,這意味著為了繼續工作,我必須重新啟動我的機器。

答案1

當一個進程保留在進程表中時,就需要殺死它家長過程。首先找到父行程PID:

ps -eo 'pid,ppid,comm' | grep 97442

然後就跑吧kill <pid>,不管ppid結果如何。 (首先給它一個徹底死去的機會。)

傳統的 Unix 設計保留進程資訊以供父母收割和清理,以防父進程想要運行getrusage(2)以了解其子進程的資源使用情況,或者wait(2)其退出狀態等。

當父母沒有收割他們的孩子時,孩子們仍然是殭屍——直到父進程被殺死,此時內核將重新將孩子們設置為init(8).init(8) 將要收割新重新養育的孩子。

相關內容