Ubuntu中找到并杀死僵尸进程

时间:2024-01-10 19:10:56

Ubuntu中产生zombie进程让人很懊恼啊。Windows中在任务管理器里直接找到无响应的进程并结束他就行了,但是ubuntu中需要用命令去解决。

System information as of Wed May 28 16:07:18 CST 2014

System load: 0.28 Processes: 205
Usage of /home: 1.2% of 72.15GB Users logged in: 1
Memory usage: 14% IP address for eth0: 192.168.2.113
Swap usage: 0%

=> There is 1 zombie process.

Graph this data and manage this system at:
https://landscape.canonical.com/

可利用命令 ps aux | grep 'Z' 来找到僵尸进程,列出的结果同时也将grep列了出来,这个不用管他。

vito@vito-Lenovo-G460:~$ ps aux | grep 'Z'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
vito 25593 0.0 0.0 0 0 ? Z 16:03 0:00 [lightdm-session] <defunct>
vito 28091 0.0 0.0 5836 820 pts/2 S+ 16:08 0:00 grep --color=auto Z

找到了僵尸进程是不够的,直接kill这个僵尸进程并不能解决问题,必须去终结这个僵尸进程的父进程。但是他的父进程是谁呢?可使用命令 pstree -p -s PID来寻找编号为PID进程也就是僵尸进程的父级进程。

vito@vito-Lenovo-G460:~$ pstree -p -s 25593
init(1)───lightdm(1058)───lightdm(25446)───gnome-session(25566)───lightdm-session(25593)

现在利用 kill PID 命令来杀死他就行了。

但是这里有个问题,就像上面演示的例子,僵尸进程的父进程是gnome-session,终结他会注销系统。