PID TID PPID COMMAND
1 1 0 init
2 2 0 kthreadd
3 3 2 ksoftirqd/0
6 6 2 migration/0
7 7 2 cpuset
8 8 2 khelper
9 9 2 netns
10 10 2 sync_supers
11 11 2 bdi-default
12 12 2 kintegrityd
13 13 2 kblockd
14 14 2 kacpid
15 15 2 kacpi_notify
16 16 2 kacpi_hotplug
17 17 2 ata_sff
18 18 2 khubd
19 19 2 md
22 22 2 khungtaskd
23 23 2 kswapd0
.......
2422 2422 1 gnome-terminal
2426 2426 2422 gnome-pty-helpe
2427 2427 2422 bash
4132 4132 1 bamfdaemon
6341 6341 414 udevd
6344 6344 2 kworker/u:0
6381 6381 2422 bash
6750 6750 1 soffice.bin
7829 7829 414 udevd
11248 11248 1 dbus-launch
11249 11249 1 dbus-daemon
12410 12410 1 check-new-relea
12687 12687 609 dhclient
13769 13769 2 kworker/0:2
13917 13917 2 kworker/0:0
13961 13961 2427 zombie
13962 13962 13961 zombie
其中,第三列是PPID,即使不是很清楚这里边的内涵,闭着眼猜也能猜出个一二来了。可以看到僵尸进程13962确实是由父进程13961(我的可执行文件叫zombie)创造的,而13961是2427bash创造的,2427是由2422gnome-terminal,也就是我打开的终端创造的,那么终端2422的parent就是1了,1已经是init了,这大概也就是这个系统从初始化到我运行的这个东西的一个流程了吧,这个Linux还真是便于学习,一目了然,具体进程1、进程2、进程3等等都是干什么的就先不管了,很多进程全是直接衍生自进程1和进程2,而间接衍生自0(这个神秘的带头大哥0到底是什么,列表上没有显示出来,也许他根本就不存在,但是为什么1和2的PPID是0呢?留下一个悬念~!)。
验证:第一个zombie不代表系统方面的含义,是我自己明明的文件名,只是一条command。
只有[zom]是系统赋予的含义(系统手懒,都是喜欢缩写的。。。。)
过程如下,command改成了zombieNameh@ubuntu:~$ ps -u
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
h 2427 0.0 0.3 6940 3636 pts/0 Ss Nov11 0:02 bash
h 6381 0.0 0.3 6940 3628 pts/1 Ss+ Nov11 0:01 bash
h 13968 0.0 0.3 6940 3624 pts/2 Ss 00:28 0:00 bash
h 14102 0.0 0.0 1700 244 pts/0 S+ 00:41 0:00 ./zombieName
h 14103 0.0 0.0 0 0 pts/0 Z+ 00:41 0:00 [zom]
h 14105 0.0 0.1 4708 1188 pts/2 R+ 00:42 0:00 ps -u
本例只作为一个引入,以后会深究。