Linux中產生zombie的原因詳解及解決方法!
zombie英文全稱是zombie process,中文名為殭屍程式,也就是死掉的程式,那麼Linux中產生zombie的原因是什麼?具體內容請看下文。
殭屍程式,英文名zombie process,顧名思義就是死掉的程式。
殭屍程式產生的原因就是父程式產生子程式後,子程式先於父程式退出,但是父程式由於種種原因,並沒有處理子程式傳送的退出訊號,那麼這個子程式就會成為殭屍程式。
這個是所謂的zombie是指在fork()/execve()過程中,假設子程式結束時父程式仍存在,而父程式fork()之前既沒安裝SIGCHLD訊號處理函式呼叫waitpid()等待子程式結束,又沒有顯式忽略該訊號,則子程式成為殭屍程式,無法正常結束,此時即使是root身份kill-9也不能殺死殭屍程式。補救辦法是殺死殭屍程式的父程式,殭屍程式成為孤兒程式,過繼給1號程式init,init始終會負責清理殭屍程式。
殭屍程式是指的父程式已經退出,而該程式dead之後沒有程式接受,就成為殭屍程式
解決方法:
1、父程式透過wait和waitpid等函式等待子程式結束,這會導致父程式掛起。執行wait()或waitpid()系統呼叫,則子程式在終止後會立即把它在程式表中的資料返回給父程式,此時系統會立即刪除該進入點。在這種情形下就不會產生defunct程式。
2、如果父程式很忙,那麼可以用signal函式為SIGCHLD安裝handler。在子程式結束後,父程式會收到該訊號,可以在handler中呼叫wait回收。
3、如果父程式不關心重點內容子程式什麼時候結束,那麼可以用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)通知核心,自己對子程式的結束不感興趣,那麼子程式結束後,核心會回收,並不再給父程式傳送訊號。
4、fork兩次,父程式fork一個子程式,然後繼續工作,子程式fork一個孫程式後退出,那麼孫程式被init接管,孫程式結束後,init會回收。不過子程式的回收還要自己做。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2936006/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- vi/vim配置篇:亂碼產生的原因及解決
- 撥號VPS中691的可能原因及解決方法?
- GitHub下載慢的原因及解決方法Github
- Linux中程式崩潰及重啟的原因詳解!Linux
- Flink生產環境常見問題及解決方法
- RNN神經網路產生梯度消失和梯度爆炸的原因及解決方案RNN神經網路梯度
- 網站內頁不收錄的原因及解決方法網站
- mysql的ERROR 1231 (42000)問題原因及解決方法MySqlError
- DNS故障的幾種常見原因及解決方法DNS
- Linux環境下段錯誤的產生原因及除錯方法小結Linux除錯
- 深度學習中“過擬合”的產生原因和解決方法深度學習
- 生產內網ssh登陸變慢問題原因及解決辦法內網
- Redis擊穿、穿透、雪崩產生原因以及解決思路Redis穿透
- (資料庫十)資料庫中的鎖機制以及死鎖產生的原因及解決辦法資料庫
- 資料庫連線錯誤的原因及解決方法資料庫
- 資料庫連線失敗的原因及解決方法資料庫
- 技術分享 | DNS解析不生效的原因及解決方法DNS
- 百度快照被劫持的原因及解決方法、百度快照劫持的解決方法全
- Linux 動態庫 undefined symbol 原因定位與解決方法LinuxUndefinedSymbol
- axios傳送兩次請求原因及解決方法iOS
- node版本升級npm命令警告原因及解決方法NPM
- 造成黏包的原因,及解決方案
- 伺服器自動重啟的原因及解決方法-VeCloud伺服器Cloud
- 程式碼簽名證書出錯的原因及解決方法
- 貼片電感器發燙常見原因以及解決方法詳解
- Python產生20個隨機整數的方法詳解!Python隨機
- Python 中__new__方法詳解及使用Python
- rundll32.exe程式佔用率CPU高的原因及解決方法
- Zookeeper--產生原因及功能
- Linux中&&和&,|和||用法及區別詳解!Linux
- JVM 發生記憶體溢位的 8 種原因、及解決辦法JVM記憶體溢位
- Laravel admin 使用者頭像顯示不出的原因及解決方法Laravel
- MySQL併發時經典常見的死鎖原因及解決方法MySql
- 郵件營銷容易成為垃圾郵件的原因及解決方法
- 恆創科技:網站401錯誤的常見原因及解決方法網站
- git did not exit cleanly(exit code 128)報錯的部分原因及解決方法Git
- JS中toFixed()方法的問題及解決方案JS
- JAVA記憶體洩露的原因及解決Java記憶體洩露