Linux/Unix:pstree命令示例:查看进程树

时间:2020-01-09 10:46:02  来源:igfitidea点击:

如何使用bash shell提示以易于阅读的树格式在基于Linux的服务器或者台式机/笔记本电脑上显示该过程?

Linux和Unix是多任务操作系统,即可以在同一时间段内运行多个任务(进程)的系统。
进程不过是Linux或者类似Unix的系统上正在运行的程序(命令)。
pstree命令将正在运行的进程显示为树。

目的

在Linux上将运行的进程显示为树

语法

基本语法如下:

pstree

或者

pstree pidid

或者

pstree user

或者

pstree [options] pid|user

如果将pid作为命令行参数,则从此PID开始。
默认值为1(初始值)。
如果将user作为命令行参数给出,则仅显示植根于该用户进程的树。

pstree只接受一个参数,该参数可以是user或者pid

在Unix上安装pstree

缺省情况下,pstree命令已安装且仅在Linux操作系统上可用。对于FreeBSD,OS X等类似Unix的系统,您需要使用源代码或者第三方二进制存储库进行安装。您可以在大多数Unix下编译pstree,并测试了AIX,Linux,HP-UX,A/UX,SunOS,Solaris,(Free | Open | Net)BSD,MacOSX/Darwin等。使用wget命令获取源代码:

$ wget ftp://ftp.thp.uni-duisburg.de/pub/source/pstree.tar.gz

使用tar命令提取文件并使用c编译器(cc)构建源代码:

$ tar zxvf pstree.tar.gz
$ cc -O -o pstree pstree.c
## install binary in /usr/local/bin/ directory ##
$ sudo cp pstree /usr/local/bin

在MacOS X上安装pstree

执行以下命令:

$ brew install pstree

pstree命令示例

要查看服务器上当前所有进程的树形图,请执行:

# pstree
# pstree | less
# pstree | more

在图的顶部,您将看到进程init,这是Linux上线时启动的第一个进程。

init是系统上所有进程的父级,它由内核执行并负责启动所有其他进程。
您可以通过传递-A选项来使用ASCII字符来绘制树:

# pstree -A

显示命令行参数

要查看命令行参数列表,请传递-a选项:

$ pstree -a

显示PID

要显示每个进程名称的PIDS,请传递-p选项:

$ pstree -p

如何对进程排序?

要通过PID而不是名称(即数字排序)对具有相同祖先的进程进行排序,请按以下方式传递-n选项:

$ pstree -n
$ pstree -np

如何查看谁是流程的所有者/用户?

要在括号中找出进程的所有者,请将-u选项传递给pstree命令:

$ pstree -u

我如何突出当前的过程及其祖先?

传递-h选项以突出显示当前进程及其祖先。
通过-H选项突出显示指定的进程(按名称/pid):

$ pstree -h

或者使用PID 60093突出显示过程:

$ pstree -H 60093

如何按PID或者用户查看进程?

pstree可以接受PID或者用户名作为命令行参数。
语法如下,以查看有关PID 1313的信息

$ pstree 1313
$ pstree -H 1313

在下面的示例中,仅显示用户名为theitroad的用户启动的那些树枝(进程):

$ pstree theitroad

pstree命令选项

在pstree(1)命令手册页中:

选项含义
-a显示命令行参数。
-A使用ASCII线描字符。
-c不要压缩相同的子树。
-h突出显示当前过程及其祖先。
-H突出显示此过程及其祖先。
-G使用VT100线条图字符。
-l不要截断长行。
-n通过PID排序输出。
-p显示PID;表示-c。
-u显示uid转换。
-U使用UTF-8(Unicode)线描字符。
-V显示版本信息。
-Z显示SELinux安全上下文。