linux中有關殭屍程序的問題

2021-09-30 09:57:32 字數 810 閱讀 3227

如何查詢殭屍程序並kill之,殺不掉的要檢視父程序並殺之

用ps和grep命令尋找殭屍程序

#ps -a -ostat,ppid,pid,cmd | grep -e '^[zz]'

命令註解:

-a 引數列出所有程序

-o 自定義輸出字段 我們設定顯示欄位為 stat(狀態), ppid(程序父id), pid(程序id),cmd(命令)這四個引數

因為狀態為 z或者z的程序為殭屍程序,所以我們使用grep抓取stat狀態為zz程序

執行結果參考如下

z 12334 12339 /path/cmd

這時,我們可以使用 kill -hup 12339來殺掉這個殭屍程序

執行後,可以再次執行ps -a -ostat,ppid,pid,cmd | grep -e '^[zz]'來確認是否已經將殭屍程序殺死

如果kill 子程序的無效,可以嘗試kill 其父程序來解決問題,例如上面例子父程序pid是 12334,那麼我們就執行

#kill -hup 12334

來解決問題

一般可以用top命令發現動態程序表

#top

其中zombie是殭屍程序

linux中非殭屍程序殺不掉的問題

今天伺服器上發現一對父子程序,子程序已經是殭屍程序,但父程序不是。

但是父程序用kill -9也殺不掉。ps xl看了一下,父程序是finish t狀態,懷疑是程序被stop了。於是用kill -18傳送了乙個continue的訊號之後,程序被殺掉了。

發現網上有些個類似的問題,都是靠重啟解決了,故記下這個問題,希望對需要的人有所幫助。

Linux 殭屍程序

怎樣產生殭屍程序的 乙個程序在呼叫exit命令結束自己的生命的時候,其實它並沒有真正的被銷毀,而是留下乙個稱為殭屍程序 zombie 的資料結構 系統呼叫 exit,它的作用是使程序退出,但也僅僅限於將乙個正常的程序變成乙個殭屍程序,並不能將其完全銷毀 在linux程序的狀態中,殭屍程序是非常特殊的...

linux殭屍程序

僵死程序 在unix程序模型中,程序是按照父程序產生子程序,子程序產生子子程序這樣的方式建立出完成各項相互協作功能的程序的。當乙個程序完成它的工作終止之後,它的父程序需要呼叫wait 或者waitpid 系統呼叫取得子程序的終止狀態。如果父程序沒有這麼做的話,子程序雖然已經退出了,但是在系統程序表中...

linux殭屍程序

殭屍程序是指子程序退出時,父程序並未對其發出的sigchild訊號進行適當處理,導致子程序停留在殭屍狀態等待其父程序為其收屍,這個狀態下的子程序就是殭屍程序。include include include int main int argc,char argv return 0 從上面的執行結果可以...