發(fā)現(xiàn)問題
登錄Ubuntu系統(tǒng)是提示There is 1 zombie process.
相關(guān)資料
APEU2對于 僵尸進(jìn)程(zombie process)的定義:
In UNIX System terminology, a process that has terminated, but whose parent has not yet waited for it, is called a zombie.
父線程在子線程結(jié)束時,沒有進(jìn)入wait方法獲取子線程的終止?fàn)顟B(tài),子線程終止后就是僵尸進(jìn)程。
-
僵尸進(jìn)程(zombie process)的危害
子線程結(jié)束時會發(fā)送SIGCHLD信號給父線程,父線程進(jìn)入wait方法釋放相關(guān)資源,關(guān)閉打開的文件等。當(dāng)父線程不知道子線程已結(jié)束,不進(jìn)入wait方法釋放相關(guān)資源,大量的僵尸進(jìn)程會占用系統(tǒng)大量資源;另一方面子進(jìn)程的進(jìn)程號還一直被占用,當(dāng)大量的僵尸進(jìn)程出現(xiàn)時會導(dǎo)致系統(tǒng)無法創(chuàng)建新的進(jìn)程。
查看僵尸進(jìn)程
使用 ps aux | grep Z 查看STAT為Z的進(jìn)程
解決方法
kill父進(jìn)程
ps -e -o ppid,stat | grep Z | cut -d" " -f2 | xargs kill -9