12.2 查看进程树
ps axjf
在Linux世界中,进程并不是凭空出现的。通常,启动一个程序的同时,也会启动其他程序。例如,Linux系统中的所有进程最初都来自init
,它是所有进程的源头,其PID总为1
。ps
命令能够提供该进程树的一种基于文本的表现方式,这样就能可视化地看看该进程又创建了哪些其他进程。要查看进程树,除了使用上一节用过的a
、u
和x
选项,还要加上个f
(其名称源于ASCII art forest)选项。
说明 通常会看到以下各列内容:
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
为了让命令树更易于理解,下列代码列表删除了用
ps axuf
命令实际会看到的大部分列。
$ ps axuf
PPID PID COMMAND
1 7558 /usr/sbin/gdm
7558 7561 \_ /usr/sbin/gdm
7561 7604 \_ /usr/X11R6/bin/X :0
7561 8225 \_ /bin/sh /usr/bin/startkde
8225 8279 \_ /usr/bin/ssh-agent
8225 8341 \_ kwrapper ksmserver
1 8316 kdeinit Running...
8316 10842 \_ konqueror [kdeinit] --silent
8316 29663 \_ quanta
8316 30906 \_ /usr/bin/kwrite /home/scott/analysis
8316 17893 \_ /usr/lib/opera/9.0-20060206.1/opera
17893 17960 | \_ /usr/lib/opera/pluginwrapper
17893 17961 | \_ /usr/lib/opera/plugincleaner
注意,ps axjf
命令引入了一个重要的新列:PPID
。PPID
(Parent Process ID,父进程ID编号)是创建PID进程的进程的PID编号。有了PID或PPID,就能够终止任何失控(runaway)的进程,将在12.4节中进行介绍。