Linux中的僵尸進程通常是通過系統監控工具或命令行工具發現的。以下是幾種常見的方法:
使用 ps
命令:
ps -A -o stat,ppid,pid,cmd | grep '[zZ]'
命令可以列出所有狀態為 Z
或 z
的進程,這些就是僵尸進程。ps -ef | grep defunct
,這個命令會列出所有已經退出但仍然保留其進程信息的僵尸進程。使用 top
或 htop
命令:
top
命令的輸出結果中,可以查看進程的狀態,如果有狀態為 Z
的進程,則表示存在僵尸進程。htop
命令與 top
類似,提供了更直觀的界面來查看和管理進程。使用 /proc
文件系統:
/proc/[PID]/status
文件中的狀態信息,如果包含 Z
,則表示該進程處于僵尸狀態。使用 pstree
命令:
pstree -psnsystemd
命令可以顯示系統進程樹,通過查看樹中的僵尸進程可以定位到具體的僵尸進程。發現僵尸進程后,通常的清理方法包括:
SIGCHLD
信號,執行 waitpid()
函數為子進程收尸。init
進程清理。kill
命令:發送 SIGCHLD
信號給父進程,讓父進程清理子進程。。