檢視並殺死defunct殭屍程序

2021-10-07 20:02:46 字數 828 閱讀 6519

defunct程序如何直接kill掉;只要殺死它的父程序,defunct程序就自動消失了.

檢視defunct程序 

ps -e -o ppid,stat | grep z | cut -d " " -f1

殺死ps -e -o ppid,stat | grep z | cut -d " " -f1| xargs kill -9

defunct程序的產生是因為子程序先於父程序結束了,會保留一些資訊(程序號等)留給父程序獲取其狀態,這些保留的資訊直到父程序通過呼叫wait/waitpid時才會釋放,一旦父程序呼叫wait/waitpid就會釋放。如果子程序先於父程序結束,且父程序沒有呼叫wait/waitpid就產生殭屍程序。

如果父程序先於子程序結束,系統會用init來接管它,成為它的父程序,並對其進行清理。所以只要殺掉父程序,defunct的子程序也就會被**了。

1、wait:子程序結束時,系統向其父程序傳送sigchild訊號;父程序呼叫wait函式後阻塞;父程序被sigchild訊號喚醒然後去**殭屍子程序;sigchild訊號機制就是為了解決父子程序之間的非同步通訊問題,讓父程序可以及時的去**殭屍子程序;若父程序沒有任何子程序則wait返回錯誤。

2、wait的引數status。status用來返回子程序結束時的狀態,父程序通過wait得到status後,就可以知道子程序的一些結束狀態資訊

3、wait的返回值pid_t,這個返回值就是本次wait**的子程序的pid。當前程序有可能有多個子程序,wait函式阻塞直到其中乙個子程序結束wait就會返回,wait的返回值就可以用來判斷到底是哪乙個子程序本次被**了。wait主要是用來**子程序資源,**同時還可以得知被**子程序的pid和退出狀態。

CentOS下如何檢視並殺死殭屍程序

ps a o stat,ppid,pid,cmd grep e zz 昨天伺服器到期,之前的伺服器由於空間小,不能滿足現在的服務要求,就新購買了乙個伺服器,目前正在除錯安裝中!在除錯過程中,發現系統中有很多殭屍程序,現在就是找出這些殭屍程序,並將其殺死。用top檢視系統中的殭屍程序情況 ps a o...

CentOS下如何檢視並殺死殭屍程序

昨天伺服器到期,之前的伺服器由於空間小,不能滿足現在的服務要求,就新購買了乙個伺服器,目前正在除錯安裝中!在除錯過程中,發現系統中有很多殭屍程序,現在就是找出這些殭屍程序,並將其殺死。用top檢視系統中的殭屍程序情況 再看看這些殭屍是什麼程式來的 ps a o stat,ppid,pid,cmd g...

Linux尋找並殺死殭屍程序

linux伺服器上,多少會出現一些殭屍程序,下面介紹如何快速尋找和消滅這些殭屍程序的方法 首先,我們可以用top命令來檢視伺服器當前是否有殭屍程序,在下圖中可以看到殭屍程序數的提示,如果數字大於0,那麼意味著伺服器當前存在有殭屍程序 下面,我們用ps和grep命令尋找殭屍程序 ps a ostat,...