Linux
•
•
By Nina
殭屍進程 (Zombie Processes) 的成因與處理
殺不死的進程?
在 top 中看到狀態為 Z 的進程,使用 kill -9 是無效的,因為它們已經「死」了。
成因:子進程結束執行,但父進程沒有呼叫 wait() 來回收它的狀態資訊 (Exit Code),導致它在 Process Table 中殘留。
處理方式:
- 找出父進程:
ps -o ppid= -p <zombie_pid>。 - 殺死父進程:如果父進程程式寫得爛無法回收,通常只能重啟父進程。父進程死後,殭屍進程會被 PID 1 (systemd) 接管並自動回收。
大量的 Zombie Process 不會佔用記憶體,但會佔用 PID 額度,可能導致無法建立新進程。