如何查看並殺死僵屍進程?


用下面的命令找出僵死進程

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

  命令注解:
  -A 參數列出所有進程
  -o 自定義輸出字段 我們設定顯示字段為 stat(狀態), ppid(進程父id), pid(進程id),cmd(命令)這四個參數

 

    ps -C java -o lstart,pid,cmd【不過貌似打印的不全~】
       ps -A -o lstart,pid,args |grep java【這個可以的~】

  因為狀態為 z或者Z 的進程為僵屍進程,所以我們使用grep抓取stat狀態為zZ進程
  運行結果參考如下

點擊查看原圖

  這里一共出現了9個僵死進程,我們需要把它們都干掉,執行下面的命令

  kill -9 8310

  這時你再執行查找僵死的進程,發現所有僵死進程都沒了.

  補充:

  最近又遇到了個問題,一台服務器上產生了100多少僵死進程,而且每一僵死進程的父進程都不一樣,如果用上面的方法,一條一條的殺,那還不得累死我啊。
  那么就應該想一條簡單的命令,直接查找僵死進程,然后將父進程殺死~

   ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM