Process
為什麼我不應該使用 ‘kill -9’ / SIGKILL
發布這個問題是因為我很驚訝沒有直接回答它;抱歉,如果這是重複的-我確實看過!
我聽說過
kill -9
或者kill -SIGKILL
不好,但我不明白為什麼。如果我不應該kill -9
怎麼做才能殺死一個程序?
SIGKILL
從正在執行的程序中拉出地毯,立即終止它。對於非常簡單的程序,這很好;然而,在實踐中,“簡單”的程序很少。在幕後,即使是看似微不足道的程序也會在終止前完成各種事務性工作(想想
finally
Java 和其他程式語言中的塊),例如關閉資源句柄、刪除臨時文件和刷新數據記憶體到磁碟。您無法預測程序何時會執行此類操作。如果你很幸運,發送 a 就不會注意到任何問題
SIGKILL
,但你不可能永遠幸運,而且你可能不知道有什麼問題,直到為時已晚才能恢復失去的內容。您幾乎永遠不需要發送
SIGKILL
,並且您應該確保在這樣做之前已經用盡了您的選擇。在許多情況下,重新啟動(最終會將SIGKILL
s 發送到行為不端的程序)比手動發送更安全SIGKILL
。我可能一方面可以數出我需要發送的次數SIGKILL
(並且可能是我自己製作的)。一般來說,您可以使用
Ctrl
+C
(發送前台程序 aSIGINT
)或SIGTERM
(如“終止”)來指示程序停止正在執行的操作並退出。一些進一步的閱讀: