當前位置:首頁 » 操作系統 » linux僵死的進程

linux僵死的進程

發布時間: 2022-08-28 20:07:24

A. linux中如何殺掉僵屍進程

1、使用top命令就可以查看到僵屍進程。

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

3、殺死僵屍進程

#kill -9 pid號


B. 在linux系統上怎麼列出所有的僵屍進程

1、使用top命令就可以查看到僵屍進程。
2、查看具體進程pid
#ps
-A
-o
stat,ppid,pid,cmd
|grep
-e
"^[Zz]"
說明:不是查不出僵屍進程,是因為我重啟了系統,沒有僵屍進程。
3、殺死僵屍進程
#kill
-9
pid號

C. ubuntu Linux怎麼解決僵屍進程

如何查看linux系統上的僵屍進程,如何統計有多少僵屍進程?

#ps -ef | grep defunct

或者查找狀態為Z的進程,Z就是代表zombie process,僵屍進程的意思。

另外使用top命令查看時有一欄為S,如果狀態為Z說明它就是僵屍進程。

Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie

top命令中也統計了僵屍進程。或者使用下面的命令:

ps -ef | grep defunct | grep -v grep | wc -l

如何殺死僵屍進程呢?
一般僵屍進程很難直接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 』{print $2}』`

當然您可以自己編寫更好的shell腳本

D. 如何linux的僵屍進程

當然會成為僵屍進程,你的C、D子進程比父進程先結束, 在fork ()/execve()過程中,假設子進程結束時父進程仍存在,而父進程fork()之前既沒安裝SIGCHLD信號處理函數調用waitpid()等待子進程結束,又沒有顯式忽略該信號,則子進程成為僵屍進程,無...

E. Linux怎麼查找殺死僵死進程

//先查看具體進程:#ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]"
//殺死z進程(這些動作是比較危險的,希望在真正的伺服器上面慎用!!!)
#kill -9 pid號


假若你的z進程比較多,可以編寫個小小的腳本,下面是參與網上的
#ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

F. ubuntu Linux怎麼解決僵屍進程

inux 允許進程查詢內核以獲得其父進程的 PID,或者其任何子進程的執行狀態。例如,進程可以創建一個子進程來執行特定的任務,然後調用諸如 wait() 這樣的一些庫函數檢查子進程是否終止。如果子進程已經終止,那麼,它的終止代號將告訴父進程這個任務是否已成功地完成。
為了遵循這些設計原則,不允許 Linux 內核在進程一終止後就丟棄包含在進程描述符欄位中的數據。只有父進程發出了與被終止的進程相關的 wait() 類系統調用之後,才允許這樣做。這就是引入僵死狀態的原因:盡管從技術上來說進程已死,但必須保存它的描述符,直到父進程得到通知。
如果一個進程已經終止,但是它的父進程尚未調用 wait() 或 waitpid() 對它進行清理,這時的進程狀態稱為僵死狀態,處於僵死狀態的進程稱為僵屍進程(zombie process)。任何進程在剛終止時都是僵屍進程,正常情況下,僵屍進程都立刻被父進程清理了

G. 在Linux系統中查看進程及殺死僵屍進程的方法

ps
命令
ps
命令就是最根本相應情況下也是相當強大地進程查看命令.運用該命令可以確定有哪些進程正在運行和運行地狀態、
進程
是否結束、進程有沒有僵死、哪些進程佔用了過多地資源等等.總之大部分信息均為可以通過執行該命令得到地.
ps
命令及其參數
ps
命令最經常使用地還是用於監控後台進程地工作情況,因為後台進程是不和屏幕鍵盤這些標准輸入/輸出設
備進行通信地,所以如果需要檢測其情況,便可以運用
ps
命令了.
該命令語法格式如下:
ps
[選項]
-e
顯示所有進程,環境變數
-f
全格式
-h
不顯示標題
-l
長格式
-w
寬輸出
a
顯示終端上地所有進程,包括其他用戶地進程
r
只顯示正在運行地進程
x
顯示沒有控制終端地進程
O[+|-]
k1
[,[+|-]
k2
[,…]]
根據
SHORT
KEYS、k1、k2
中快捷鍵指定地多級排序順序顯示進程列表.
對於
ps
地不同格式都存在著默認地順序指定.這些默認順序可以被用戶地指定所覆蓋.在這裡面“+”字元是可選地,“-”
字元是倒轉指定鍵地方向.
pids
只列出進程標識符,之間運用逗號分隔.該進程列表必須在命令行參數地最後一個選項後面緊接著給出,中間不能插入
空格.比如:ps
-f1,4,5.
以下介紹長命令行選項,這些選項都運用“--”開頭:
--sort
X[+|-]
key
[,[+|-]
key
[,…]]

SORT
KEYS
段中選一個多字母鍵.“+”字元是可選地,因為默認地方向就是按
數字升序或者詞典順序.比如:
ps
-jax
-sort=uid,-ppid,+pid.
--help
顯示幫助信息.
--version
顯示該命令地版本信息.
在前面地選項說明中提到了排序鍵,接下來對排序鍵作進一步說明.需要注意地是排序中運用地值是
ps
運用地內部值,並非
僅用於某些輸出格式地偽值.排序鍵列表見表
4-3.
排序鍵列表
c
cmd
可執行地簡單名稱
C
cmdline
完整命令行
f
flags
長模式標志
g
pgrp
進程地組
ID
G
tpgid
控制
tty
進程組
ID
j
cutime
累計用戶時間
J
cstime
累計系統時間
k
utime
用戶時間
K
stime
系統時間
m
min_flt
次要頁錯
查找Zombie進程
首先,當桌面程序卡死的時候,你可以嘗試進入其他tty終端。切換方式:ctrl
+
alt
+
[1,2,3,4,5,6,7],7是桌面終端
其次,你可以使用top命令查看當前是否有Zombie進程
從上圖可以看到僵屍進程數,num
zombie,num大於0,則代表系統存在僵屍進程
最後,利用ps命令查找Zombie進程
復制代碼
代碼如下:
ps
-A
-ostat,ppid,pid,cmd
|
grep
-e
'^[zZ]'
示例

殺死Zombie進程
直接kill
-9
Zombiepid是沒有作用的,原因是:Zombie表示進程已經退出,想要清理這樣的進程,需要清除其父進程或者等很長時間後內核將其清除
復制代碼
代碼如下:
kill
-HUP
ppid
後記
不知道為什麼我注銷之後重新登錄還有這個僵屍進程,懷疑是否是LightDM的bug,不過Ubuntu12.04
desktop
display
manager就是LightDM,所以kill
-HUP至少起到了注銷的作用,不用重啟了

H. linux下僵屍態的進程是怎樣引起的 csdn或chinaunix

當然會成為僵屍進程,你的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會回收。不過子進程的回收 還要自己做。

I. linux怎麼處理僵屍進程

一般僵屍進程很難直接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 』{print $2}』`
當然您可以自己編寫更好的shell腳本,歡迎與大家分享。
我將nova-novncproxy stop後再start,僵屍進程即消失,問題解決。
另外子進程死後,會發送SIGCHLD信號給父進程,父進程收到此信號後,執行waitpid()函數為子進程收屍。就是基於這樣的原理:就算父進程沒有調用wait,內核也會向它發送SIGCHLD消息,而此時,盡管對它的默認處理是忽略,如果想響應這個消息,可以設置一個處理函數。

熱點內容
存儲機箱 發布:2025-05-15 02:31:31 瀏覽:836
編程很累嗎 發布:2025-05-15 02:29:25 瀏覽:551
疫情期間訪問國外網路 發布:2025-05-15 02:24:24 瀏覽:247
我的世界網易版游戲伺服器 發布:2025-05-15 02:23:46 瀏覽:221
全球編程網站 發布:2025-05-15 02:22:55 瀏覽:334
編程貓知乎 發布:2025-05-15 02:18:00 瀏覽:631
伺服器轉接搭建 發布:2025-05-15 02:12:50 瀏覽:518
編譯好的內核如何升級另一台主機 發布:2025-05-15 02:00:06 瀏覽:759
彈反腳本 發布:2025-05-15 01:58:24 瀏覽:587
安卓按鍵大師怎麼用 發布:2025-05-15 01:54:12 瀏覽:688