网站黄色在线观看视频,男人和女人操逼有免费的视频吗2018高清,91熟女丨老女人丨高潮丰满,丝袜高潮流白浆潮喷在线播放

中國站

中國站

國際版

聯(lián)系我們

400-002-9968

售前咨詢

售后服務(wù)

注冊 登錄

博客 > 如何查找和殺掉Linux中的僵尸進(jìn)程?

如何查找和殺掉Linux中的僵尸進(jìn)程?

  • 標(biāo)簽:
  • Linux
  • Linux進(jìn)程

瀏覽量:1474次評論:0次

作者:銳成網(wǎng)絡(luò)整理時間:2024-07-19 15:52:43

Linux系統(tǒng)中,進(jìn)程就是一個程序的運行實例。它可能運行在前端(比如有交互的進(jìn)程),也可能運行在后端(比如無交互或自動運行的進(jìn)程)。它可能是一個父進(jìn)程(運行期間創(chuàng)建了其他進(jìn)程),也可能是一個子進(jìn)程(由其他進(jìn)程所創(chuàng)建)。在 Linux 系統(tǒng)中,除 PID 為 0 的第一個 init 進(jìn)程(或 systemd)外,其余進(jìn)程都有父進(jìn)程。進(jìn)程也可以擁有自己的子進(jìn)程。你可以通過使用命令pstree來查看進(jìn)程的樹型結(jié)構(gòu),你可以清晰的看到各個進(jìn)程的“家族樹”。

什么是僵尸進(jìn)程?

在Linux系統(tǒng)中,正常情況下,子進(jìn)程死亡后其父進(jìn)程會接收到通知進(jìn)行一些例如釋放內(nèi)存之類的清理操作。但是,如果父進(jìn)程未收到通知察覺子進(jìn)程死亡,那么子進(jìn)程就進(jìn)入了“僵死”狀態(tài)。這就是僵死進(jìn)程產(chǎn)生的原因。

碰到僵尸進(jìn)程怎么辦?

僵尸進(jìn)程并不可怕,少量的僵尸進(jìn)程對系統(tǒng)影響并不大。但如果系統(tǒng)的內(nèi)存已經(jīng)所剩不多或者有太多的僵尸進(jìn)程耗掉內(nèi)存,問題會變得糟糕。同樣,大部分 Linux 系統(tǒng)進(jìn)程最大 PID 設(shè)置為 32768,如果過多僵尸進(jìn)程導(dǎo)致其他重要任務(wù)沒有 PID 可用,那么你的系統(tǒng)會發(fā)生崩潰。特別當(dāng)存在一個編碼糟糕的程序開始大量產(chǎn)生僵尸進(jìn)程的時候,這種情況經(jīng)常發(fā)生。在這種情況下,我們就需要找到并殺死僵尸進(jìn)程。

如何查找僵尸進(jìn)程?

在linux系統(tǒng)中,進(jìn)程有如下幾種狀態(tài),它們隨時可能處于以上狀態(tài)中的一種:

  • D = 不可中斷的休眠
  • I = 空閑
  • R = 運行中
  • S = 休眠
  • T = 被調(diào)度信號終止
  • t = 被調(diào)試器終止
  • Z = 僵尸狀態(tài)

我們可以在命令終端中通過top命令來查看系統(tǒng)進(jìn)程和它的當(dāng)前狀態(tài)。

命令如下:

top

如何查找和殺掉Linux中的僵尸進(jìn)程?

如上面截圖中看到的,其中共有 250 個任務(wù)(進(jìn)程),其中 1 個處在 “運行中running” 狀態(tài),248 個進(jìn)程處于 “休眠sleep” 狀態(tài),還有一個處于 “僵尸zombie” 狀態(tài)。

現(xiàn)在問題進(jìn)入下一步,如何殺死 “僵尸” 進(jìn)程?

殺死僵尸進(jìn)程

僵尸進(jìn)程對系統(tǒng)來說就是已經(jīng)死亡的進(jìn)程,那么如何殺掉一個已經(jīng)死亡的進(jìn)程呢?

方法很簡單,我們只需要通過如下ps命令就可以列舉僵尸進(jìn)程,得到它們的進(jìn)程 ID。

ps ux | awk '{if($8=="Z+") print}'

ps ux 命令輸出的第 8 列顯示了進(jìn)程狀態(tài)。上述命令將會打印所有處在 Z+ 狀態(tài)(表示僵尸狀態(tài))的進(jìn)程。

確認(rèn)了進(jìn)程 ID 后,我們可以得到它的父進(jìn)程 ID:

ps -o ppid= -p <child_id>

你也可以將上述兩個命令結(jié)合在一起,直接得到僵尸進(jìn)程的 PID 及其父進(jìn)程的 PID:

ps -A -ostat,pid,ppid | grep -e '[zZ]'

通過以上命令都可以找到僵尸進(jìn)程,然后你就可以通過kill命令殺掉了。

kill -9 父進(jìn)程號

如何查找和殺掉Linux中的僵尸進(jìn)程?

或者通過如下命令查看僵尸進(jìn)程:

ps -ef | grep defunct

該命令輸出結(jié)果上你可以直接看出其父進(jìn)程ID,這時候你直接使用kill命令殺掉即可。再次運行 ps 命令或 top 命令,你可以驗證僵尸進(jìn)程是否已經(jīng)被殺死。

寫在最后

通過本文你將認(rèn)識Linux系統(tǒng)中的僵尸進(jìn)程以及明白了其產(chǎn)生的主要原因。同時,你也能學(xué)會如何查找僵尸僵尸進(jìn)程并殺掉僵尸進(jìn)程。當(dāng)然你也可以自己別寫腳本設(shè)置成定時運行任務(wù)自動來替你做這些工作。

重要聲明:本文來自Linux265,經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有,不代表銳成觀點,轉(zhuǎn)載的目的在于傳遞更多知識和信息。

我的評論

還未登錄?點擊登錄

微信掃碼溝通
微信掃碼溝通

微信掃碼溝通

AI
return head