亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1158 | 回復: 0
打印 上一主題 下一主題

Linux中狀態(tài)為D 或Z 的進程 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-02-20 11:55 |只看該作者 |倒序瀏覽
長期生活在 Linux 環(huán)境里,漸漸地就有一種環(huán)保意識油然而生。比如,我們會在登錄提示里寫上“悟空,我跟你說過叫你不要亂扔東西,亂扔東西是不對的。哎呀我話沒說完你怎么把棍子扔掉了?月光寶盒是寶物,亂扔它會污染環(huán)境,要是砸到小朋友怎么辦?就算砸不到小朋友,砸到了花花草草也不好嘛...”;在用戶缺省目錄里放一個題為 “自覺保護環(huán)境 請勿堆放垃圾”的空文件,并用 chattr +i 設為不可修改;看到垃圾文件就立即掃入 /tmp 目錄,然后發(fā)廣播通知垃圾制造者自己去 /tmp 認領,且警告其下不為例...我們深知,系統(tǒng)環(huán)境的整潔有利于系統(tǒng)管理員保持良好的心情、清晰的思路和穩(wěn)定的工作狀態(tài)。
  有一類垃圾卻并非這么容易打掃,那就是我們常見的狀態(tài)為 D (Uninterruptible sleep) ,以及狀態(tài)為 Z (Zombie) 的垃圾進程。這些垃圾進程要么是求而不得,像怨婦一般等待資源(D),要么是僵而不死,像冤魂一樣等待超度(Z),它們在 CPU run_queue 里滯留不去,把 Load Average 弄的老高老高,沒看過我前一篇blog的國際友人還以為這兒民怨沸騰又出了什么大事呢。怎么辦?開槍!kill -9!看你們走是不走。但這兩種垃圾進程偏偏是刀槍不入的,不管換哪種槍法都殺不掉它們。無奈,只好reboot,像剿滅禽流感那樣不分青紅皂白地一律撲殺!
  悟空,我們所運維的可是24*7全天候對外部客戶服務的系統(tǒng),怎么能動不動就 reboot ?我們的考核指標可是4個9(99.99%,全年計劃外當機時間不得超過52分鐘34秒),又不是4個8,你稍微遇到點事就reboot,還要不要可用性了?再說,現(xiàn)在社會都開始奔和諧去了,我們對于 D 和 Z 這兩種垃圾進程,也該盡可能采取慈悲手段,能解決其困難的,就創(chuàng)造條件,解決其實際困難,能消除其冤結的,就誦經(jīng)燒紙,消除其前世冤結,具體問題應具體分析具體解決,濫殺無辜只會導致冤冤相報因果循環(huán)...$^#$%#%^@#
  貧僧還是回來說正題。怨婦 D,往往是由于 I/O 資源得不到滿足,而引發(fā)等待,在內核源碼 fs/proc/array.c 里,其文字定義為“ "D (disk sleep)", /* 2 */ ”(由此可知 D 原是Disk的打頭字母),對應著 include/linux/sched.h 里的“ #define TASK_UNINTERRUPTIBLE 2 ”。舉個例子,當 NFS 服務端關閉之時,若未事先 umount 相關目錄,在 NFS 客戶端執(zhí)行 df 就會掛住整個登錄會話,按 Ctrl+C 、Ctrl+Z 都無濟于事。斷開連接再登錄,執(zhí)行 ps axf 則看到剛才的 df 進程狀態(tài)位已變成了 D ,kill -9 無法殺滅。正確的處理方式,是馬上恢復 NFS 服務端,再度提供服務,剛才掛起的 df 進程發(fā)現(xiàn)了其苦苦等待的資源,便完成任務,自動消亡。若 NFS 服務端無法恢復服務,在 reboot 之前也應將 /etc/mtab 里的相關 NFS mount 項刪除,以免 reboot 過程例行調用 netfs stop 時再次發(fā)生等待資源,導致系統(tǒng)重啟過程掛起。
    D是處于TASK_UNINTERRUPTIBLE的進程,深度睡眠,不響應信號。 一般只有等待非常關鍵的事件時,才把進程設為這個狀態(tài)。
  冤魂 Z 之所以殺不死,是因為它已經(jīng)死了,否則怎么叫 Zombie(僵尸)呢?冤魂不散,自然是生前有結未解之故。在UNIX/Linux中,每個進程都有一個父進程,進程號叫PID(Process ID),相應地,父進程號就叫PPID(Parent PID)。當進程死亡時,它會自動關閉已打開的文件,舍棄已占用的內存、交換空間等等系統(tǒng)資源,然后向其父進程返回一個退出狀態(tài)值,報告死訊。如果程序有 bug,就會在這最后一步出問題。兒子說我死了,老子卻沒聽見,沒有及時收棺入殮,兒子便成了僵尸。在UNIX/Linux中消滅僵尸的手段比較殘忍,執(zhí)行 ps axjf 找出僵尸進程的父進程號(PPID,第一列),先殺其父,然后再由進程天子 init(其PID為1,PPID為0)來一起收拾父子僵尸,超度亡魂,往生極樂。注意,子進程變成僵尸只是礙眼而已,并不礙事,如果僵尸的父進程當前有要務在身,則千萬不可貿然殺之。
   注意:不是所有狀態(tài)為Z的進程都是無法收拾的,很可能是那個短暫的狀態(tài)剛好被你發(fā)現(xiàn)了。


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u1/53398/showart_481065.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP