在层次结构列表中显示进程对于确认系统上运行的每个进程之间的关系非常有用。今天,我想向您展示如何使用各种命令获取类似树的进程列表。
用ptree显示进程树
在Solaris中,有许多命令可以简化任何系统管理员的工作,它们是process命令(p命令)。我特别喜欢的其中一个是ptree命令,它向您显示进程列表。
运行命令时,将获得Solaris系统上运行的所有进程的层次结构列表,以及进程ID(PID)。对我来说,这是一个非常有用的命令,因为它向您展示了每个进程与系统中其他进程之间的确切关联。
这是ptree输出的一部分:
bash-3.00$ ptree
7 /lib/svc/bin/svc.startd
250 /usr/lib/saf/sac -t 300
268 /usr/lib/saf/ttymon
260 -sh
5026 -csh
9 /lib/svc/bin/svc.configd
107 /usr/lib/sysevent/syseventd
136 /usr/lib/picl/picld
140 /usr/lib/crypto/kcfd
159 /usr/sbin/nscd
227 /usr/sbin/rpcbind
234 /usr/lib/nfs/statd
235 /usr/sbin/keyserv
236 /usr/lib/netsvc/yp/ypserv -d
237 rpc.nisd_resolv -F -C 8 -p 1073741824 -t udp
241 /usr/lib/nfs/lockd
247 /usr/lib/netsvc/yp/ypbind
263 /usr/lib/utmpd
286 /usr/sadm/lib/smc/bin/smcboot
287 /usr/sadm/lib/smc/bin/smcboot
288 /usr/sadm/lib/smc/bin/smcboot
用pstree处理树
在大多数Linux发行版中,您可以找到pstree命令,与ptree非常相似。
这就是您可以使用它的方式(-p是显示PID的选项,-l使用长输出格式):
ubuntu$ pstree -pl
init(1)─┬─NetworkManager(5427)
├─NetworkManagerD(5441)
├─acpid(5210)
├─apache2(6966)─┬─apache2(2890)
│ ├─apache2(2893)
│ ├─apache2(7163)
│ ├─apache2(7165)
│ ├─apache2(7166)
│ ├─apache2(7167)
│ └─apache2(7168)
├─atd(6369)
├─avahi-daemon(5658)───avahi-daemon(5659)
├─bonobo-activati(7816)───{bonobo-activati}(7817)
...
用ps显示进程树–forest
在Linux中找到的ps命令具有–forest选项,该选项向您显示进程的树结构。
根据我的经验,最好的方法是像这样使用它:
ubuntu$ ps -aef --forest
UID PID PPID C STIME TTY TIME CMD
...
107 5473 1 0 10037 4600 0 Apr28 ? 00:00:02 /usr/sbin/hald
root 5538 5473 0 5511 1288 0 Apr28 ? 00:00:00 \_ hald-runner
root 5551 5538 0 6038 1284 0 Apr28 ? 00:00:01 \_ hald-addon-input: Listening on /dev/input
107 5566 5538 0 4167 992 1 Apr28 ? 00:00:00 \_ hald-addon-acpi: listening on acpid socke
root 5600 5538 0 6038 1272 1 Apr28 ? 00:00:15 \_ hald-addon-storage: polling /dev/scd0 (ev
root 5476 1 0 10272 2532 0 Apr28 ? 00:00:00 /usr/sbin/console-kit-daemon
root 5627 1 0 12728 1176 1 Apr28 ? 00:00:00 /usr/sbin/sshd
root 9151 5627 0 17536 3032 0 10:53 ? 00:00:00 \_ sshd: greys [priv]
greys 9162 9151 0 17538 1892 1 10:54 ? 00:00:00 \_ sshd: greys@pts/3
greys 9168 9162 0 5231 3820 1 10:54 pts/3 00:00:00 \_ -bash
greys 9584 9168 0 3802 1124 0 11:27 pts/3 00:00:00 \_ ps -aeF --forest
此输出仅用于演示目的,因此,我删除了输出的第一行,因为它们不能很好地满足本示例的目的。
对于输出的稀薄片段,您可以查看如何获取有关每个过程的所有重要信息。我真的很喜欢这种运行ps命令的方式。
今天就这样!您知道查看流程树的任何其他巧妙方法吗?让我知道!