在CentOS(一種Linux發行版)中,僵尸進程(Zombie Process)是指一個已經終止但其父進程尚未對其進行善后處理(如回收資源)的進程。簡單來說,當子進程比父進程先退出,而父進程沒有調用 wait()
或 waitpid()
來回收子進程的資源時,子進程就會變成一個僵尸進程。
wait()
或 waitpid()
來讀取子進程的退出狀態。這時,子進程的進程描述符仍然保存在系統中,導致僵尸進程的產生。如果父進程隨后也結束了,系統會掃描所有進程,將僵尸進程回收,否則它們會一直存在。
使用 ps
命令:
ps -A -o stat,ppid,pid,cmd | grep -e '[Zz]'
這個命令會列出所有狀態為 Z
或 z
的僵尸進程。
使用 top
命令:
top -e | grep 'Z'
在 top
動態更新的進程列表中,僵尸進程會在狀態列顯示為 Z
。
init
進程接管并回收子進程的資源。kill -HUP <僵尸進程的父進程ID>
然后再次使用 ps
命令確認僵尸進程是否被清除。
kill
命令殺死它。kill -9 <僵尸進程ID>
如果父進程無法殺死僵尸進程,也可以嘗試直接殺死父進程,使系統自動回收僵尸進程。
通過以上方法,可以有效地管理和清理CentOS系統中的僵尸進程,確保系統的穩定運行。