linux下殭屍程序的發現與處理

2021-10-01 03:53:40 字數 1758 閱讀 7408

當子程序退出時,父程序沒有呼叫wait函式或者waitpid()函式等待子程序結束,又沒有顯式忽略sigchld訊號,那麼它將一直保持在殭屍狀態,如果這時父程序結束了,init程序會自動接收這個子程序,為它收屍,但如果父程序是乙個迴圈,不會結束,那麼子程序就會一直保持僵死狀態。

程序狀態:

ps -a -o stat,ppid,pid,cmd | grep -e '

^[zz]

'

命令註解:

root     426489

0.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...