ubuntu Linux怎麼解決殭屍程序?

2022-12-20 03:20:08 字數 2849 閱讀 7324

1樓:河南新華電腦學院

inux 允許程序查詢核心以獲得其父程序的 pid,或者其任何子程序的執行狀態。例如,程序可以建立一個子程序來執行特定的任務,然後呼叫諸如 wait() 這樣的一些庫函式檢查子程序是否終止。如果子程序已經終止,那麼,它的終止代號將告訴父程序這個任務是否已成功地完成。

為了遵循這些設計原則,不允許 linux 核心在程序一終止後就丟棄包含在程序描述符欄位中的資料。只有父程序發出了與被終止的程序相關的 wait() 類系統呼叫之後,才允許這樣做。這就是引入僵死狀態的原因:

儘管從技術上來說程序已死,但必須儲存它的描述符,直到父程序得到通知。

如果一個程序已經終止,但是它的父程序尚未呼叫 wait() 或 waitpid() 對它進行清理,這時的程序狀態稱為僵死狀態,處於僵死狀態的程序稱為殭屍程序(zombie process)。任何程序在剛終止時都是殭屍程序,正常情況下,殭屍程序都立刻被父程序清理了。

2樓:

在超級使用者root 下面,使用ps -al 命令,看看能否找到殭屍程序的名字?若能夠找到其名字的話,使用 kill -9 該程序的程序號。

3樓:匿名使用者

找到殭屍程序,殺死即可。

linux怎麼處理殭屍程序

4樓:碼大牛

一般殭屍程序很難直接kill掉,不過您可以kill殭屍爸爸。父程序死後,殭屍程序成為」孤兒程序」,過繼給1號程序init,init始終會負責清理殭屍程序.它產生的所有殭屍程序也跟著消失。

ps -e -o ppid,stat | grep z | cut -d」 」f2 | xargs kill -9

或kill -hup `ps -a -ostat,ppid | grep -e 』^zz]『 awk 』』

我將nova-novncproxy stop後再start,殭屍程序即消失,問題解決。

另外子程序死後,會傳送sigchld訊號給父程序,父程序收到此訊號後,執行waitpid()函式為子程序收屍。就是基於這樣的原理:就算父程序沒有呼叫wait,核心也會向它傳送sigchld訊息,而此時,儘管對它的預設處理是忽略,如果想響應這個訊息,可以設定一個處理函式。

5樓:匿名使用者

可以通過kill命令直接關閉程序。

kill -9 process_id

注:process_id請使用查詢到的殭屍程序號替換。

linux如何殺死殭屍程序 詳細�0�3

linux下如何殺死殭屍程序

6樓:匿名使用者

你先試試看kill 9 能不能殺死。

在我的印象裡面 kill 9 和 kill 15 都不能殺死殭屍程序。

我記得解決方法是kill掉殭屍程序的父程序,這樣殭屍程序就會變成孤兒程序,然後init就會給他收屍了。

你能告訴我怎麼 一個一個殺嗎? 除了kill掉父程序。

要是告訴我的話 我就能告訴你怎麼集體收屍。

我一般都是重啟。安靜了。

linux中如何殺掉殭屍程序

7樓:吉祥二進位制

1、使用top命令就可以檢視到殭屍程序。

2、檢視具體程序pid

#ps -a -o stat,ppid,pid,cmd |grep -e "^zz]"

說明:不是查不出殭屍程序,是因為我重啟了系統,沒有殭屍程序。

3、殺死殭屍程序。

#kill -9 pid號。

8樓:仁斯實嘉澤

其實殭屍程序的資源已經收回,只是在程序描述表裡面還在而已,所以除非重啟系統,否則你是殺不掉殭屍程序的,他們已經被init程序管理。

可以不必理會。

linux中用什麼命令能終止殭屍程序?請高手賜教

9樓:匿名使用者

用top看有無,如。

tasks: 63 total, 1 running, 61 sleeping, 0 stopped, 1 zombie

找出zombie process:

ps aux | awk ''grep -w z可以得到類似z+ 5067的輸出。

kill -9 5067

linux的殭屍程序是怎麼出現的

10樓:原飛

當然會成為殭屍程序,你的c、d子程序比父程序先結束,在fork ()execve()過程中,假設子程序結束時父程序仍存在,而父程序fork()之前既沒安裝sigchld訊號處理函式呼叫waitpid()等待子程序結束,又沒有顯式忽略該訊號,則子程序成為殭屍程序,無法正常結束,此時即使是root身份kill -9也不能殺死殭屍程序。補救辦法是殺死殭屍程序的父程序(殭屍程序的父程序必然存在),殭屍程序成為"孤兒程序",過繼給1號程序init,init始終會負責清理殭屍程序。

殭屍程序的避免:

(1) 父程序通過wait和waitpid等函式等待子程序結束,這會導致父程序掛起。

(2) 如果父程序很忙,那麼可以用signal函式為sigchld安裝handler,因為子程序結束後, 父程序會收到該訊號,可以在handler中呼叫wait**。

(3) 如果父程序不關心子程序什麼時候結束,那麼可以用signal(sigchld, sig_ign) 通知核心,自己對子程序的結束不感興趣,那麼子程序結束後,核心會**, 並不再給父程序傳送訊號。

(4) 還有一些技巧,就是fork兩次,父程序fork一個子程序,然後繼續工作,子程序fork一 個孫程序後退出,那麼孫程序被init接管,孫程序結束後,init會**。不過子程序的** 還要自己做。

關於UBUNTU linux與windowsxp雙系統的問題

如果說grub2裝了xp的分割槽 那麼假設你的xp系統分割槽完好 想回到xp系統你就做一個pe盤 找一個磁碟管理軟體 用裡面的修復引導你就能回到xp 然後你各種嫻熟操作即可 無論是光碟還是映象光碟,都有兩個選項 1.在現有的xp系統下安裝。2.與xp並列安裝。我試過兩種。第一種最容易。如果不想要ub...

求 Ubuntu linux 指南 基礎篇

ubuntu自帶了一個debian系統手冊。就是中文的,可以看看啊!誰有好的ubuntu入門教程 關於linux的基礎知識和架構 最好能儘量適用於12.10 鳥哥的linux私房菜,另外,本人還有分ubuntu菜鳥使用手冊合集,如果想要,留下郵箱。ubuntu適合學習linux嗎,怎麼學 適合剛接觸...

ubuntu linux系統用什麼瀏覽器最好 ?用uc瀏覽器

樓主明顯是在打廣告!ubuntu預設是firefox的瀏覽器根本沒有必要換!而且uc什麼時候支援ubuntu了?linux系統bai 下,最受歡迎的系統是火狐,du用火狐會比較好zhi,當然,如果你有dao自己喜歡的內瀏覽器,且該瀏覽器恰好又 uc?uc連pc版都沒有會有linux版?ubuntu下...