Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 僵屍進程查找與清理實戰指南

編輯:Linux 教學

僵屍進程是已終止但父進程未回收其退出狀態的進程,長期累積會佔用 PID 資源。本文提供標準查找、清理流程,以及無法直接殺掉時的父進程處理策略。

快速查找僵屍進程

# ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'

參數說明:

  • -A:列出所有進程
  • -o stat,ppid,pid,cmd:自訂輸出欄位(狀態、父 PID、PID、命令)
  • grep -e '^[Zz]':篩選狀態為 Z/z(僵屍)的進程

輸出範例:

Z 12334 12339 /path/cmd
  • 12339:僵屍進程 PID(子進程)
  • 12334:父進程 PPID

清理步驟

方法一:向父進程發送 SIGHUP 信號(推薦)

# kill -HUP 12339

通知父進程重新讀取配置/回收子進程狀態。執行後再次查找確認是否清除。

方法二:若無效,殺掉父進程

# kill -HUP 12334

父進程終止後,僵屍子進程會被 init(PID 1)收養並自動回收。謹慎操作,確認父進程非關鍵系統服務。

輔助工具:top 動態監控

# top

在 top 介面中,zombie 欄位顯示僵屍進程數量,按 Shift+P 依 CPU 排序,Shift+M 依記憶體排序,c 顯示完整命令路徑。

根因分析與預防

  • 僵屍產生原因:父進程未調用 wait()/waitpid() 回收子進程退出碼
  • 開發階段務必在父進程中正確處理 SIGCHLD 信號或呼叫 waitpid()
  • 長期運行服務建議加入健康檢查機制,定期清理

掌握 ps + grep 查找與 kill -HUP 清理組合拳,配合 top 監控,即可高效處理僵屍進程問題。

Copyright © Windows教程網 All Rights Reserved