當子程序退出時,父程序沒有呼叫wait函式或者waitpid()函式等待子程序結束,又沒有顯式忽略sigchld訊號,那麼它將一直保持在殭屍狀態,如果這時父程序結束了,init程序會自動接收這個子程序,為它收屍,但如果父程序是乙個迴圈,不會結束,那麼子程序就會一直保持僵死狀態。
程序狀態:
ps -a -o stat,ppid,pid,cmd | grep -e '^[zz]
'
命令註解:
root 4264890.00.0
00 ? z 13:58
0:00 [check_haproxy.s] root
427159
0.00.0
3920
380 ? t 13:59
0:00 /opt/script/check_haproxy.sh
root
427161
0.00.0
00 ? z 13:59
0:00 [check_haproxy.s] root
428023
0.00.0
3920
384 ? t 14:00
0:00 /opt/script/check_haproxy.sh
root
428025
0.00.0
00 ? z 14:00
0:00 [check_haproxy.s] root
429389
0.00.0
3920
384 ? t 14:02
0:00 /opt/script/check_haproxy.sh
root
429390
0.00.0
00 ? z 14:02
0:00 [check_haproxy.s] root
430245
0.00.0
3920
380 ? t 14:04
0:00 /opt/script/check_haproxy.sh
root
430247
0.00.0
00 ? z 14:04
0:00 [check_haproxy.s] root
431136
0.00.0
3920
384 ? t 14:06
0:00 /opt/script/check_haproxy.sh
root
431137
0.00.0
00 ? z 14:06
0:00 [check_haproxy.s]
一台伺服器上產生了100多少僵死程序,而且每一僵死程序的父程序都不一樣,如果用
kill -9 程序id
一條一條的殺,那還不得累死我啊。
那麼就應該想一條簡單的命令,直接查詢僵死程序,然後將父程序殺死~
ps -a -o stat,ppid,pid,cmd | grep -e '^[zz]
' | awk
'' | xargs
kill -9
linux下殭屍程序的發現與處理
當子程序退出時,父程序沒有呼叫wait函式或者waitpid 函式等待子程序結束,又沒有顯式忽略sigchld訊號,那麼它將一直保持在殭屍狀態,如果這時父程序結束了,init程序會自動接收這個子程序,為它收屍,但如果父程序是乙個迴圈,不會結束,那麼子程序就會一直保持僵死狀態。程序狀態 ps a o ...
Linux下殭屍程序的處理
category 工作學習 linux 2010.12.31 什麼是殭屍程序 殭屍程序是指它的父程序已經退出 父程序沒有等待 呼叫wait waitpid 它 而該程序dead之後沒有程序接受,就成為殭屍程序,也就是 zombie 程序。殭屍程序是怎麼樣產生 乙個程序在呼叫exit命令結束自己的生命...
Linux 殭屍程序與孤兒程序
之前的部落格有講過儲存程序資訊的乙個重要的資料結構,task struct結構體,其中,state表示程序可能出現的狀態。如下 static const char const task state array 我們對個別狀態進行解釋如下 s sleeping 淺度睡眠,也是不可中斷睡眠。d disk...