tree 和 pstree:在层次结构中可视化 linux 进程和目录

举报
Tiamo_T 发表于 2021/11/25 22:51:12 2021/11/25
【摘要】 使用传统的 ps 命令,您必须手动查看 PID 和 Parent PID 以识别进程之间的依赖关系。有时以分层格式查看 Linux 进程可能会有所帮助,显示父进程下的子进程。pstree 命令(进程树)将按层次显示进程。

使用传统的 ps 命令,您必须手动查看 PID 和 Parent PID 以识别进程之间的依赖关系。有时以分层格式查看 Linux 进程可能会有所帮助,显示父进程下的子进程。pstree 命令(进程树)将按层次显示进程。
 
使用 ls 命令,您通常可以查看目录结构的内容。有时以分层显示方式查看目录结构可能会很有帮助。树命令(Directory Tree)将分层显示目录结构。
 
在本文中,让我们通过详细示例回顾如何以树状格式查看进程和目录
 

一、进程树——pstree命令

1.根据PID显示进程树

Syntax: pstree <PID>

 
在下面的例子中,我给出了我的 gdm 进程的进程 ID,它显示了我的 gdm 进程的所有子进程。即它显示 xsession、打开的 konsole、nautilus、ssh 和其他与 gdm 进程相关的进程。

$ pstree 5038
gdm---gdm-+-Xorg
`-x-session-manag-+-gnome-panel---{gnome-panel}
|-gnome-settings--+-pulseaudio-+-gconf-helper
|                 |            `-2*[{pulseaudio}]
|                 `-{gnome-settings-}
|-konsole---3*[bash]
|-metacity
|-nautilus---{nautilus}
|-python
|-seahorse-agent
|-ssh-agent
|-trackerd---{trackerd}
`-{x-session-manag}

2. 为用户显示进程树

Syntax: pstree <username>

 
下面的例子表明用户id ramesh 已经进入机器,并且运行了3 个shell 脚本,并打开了一个vim 编辑器。

$ pstree ramesh
su---bash-+-3*[sh---sleep]
`-vim---{vim}

3. 以层次结构显示所有进程

Syntax: pstree

 
不带参数的 pstree 将以层次结构显示所有进程。请注意,下面仅显示部分输出。

$ pstree | more
init-+-acpid
|-avahi-daemon---avahi-daemon
|-bonobo-activati---{bonobo-activati}
|-cron
|-cupsd
|-gdm---gdm-+-Xorg
|           `-x-session-manag-+-gnome-panel---{gnome-panel}
|                             |-gnome-settings--+-pulseaudio-+-gconf-helper
|                             |                 |            `-2*[{pulseaudio}]
|                             |                 `-{gnome-settings-}
|                             |-konsole---3*[bash]
|                             |-metacity
|                             |-ssh-agent
|                             `-{x-session-manag}
|-getty
|-konsole-+-2*[bash]
|         |-bash---vim
|         `-bash-+-pstree
|                `-vim
|-thinMS
`-udevd

4. 显示提供给进程的命令行参数

Syntax: pstree -a

 
使用选项 -a 如下所示,显示与特定进程关联的命令行参数。

$ pstree -a ramesh
su bk
`-bash
|-sh ./test.sh
|   `-sleep 1000
|-sh ./test.sh
|   `-sleep 1000
|-sh ./test.sh
|   `-sleep 1000
`-sh test.sh [1-9]
`-sleep 1000

二、目录树——树命令

1. 查看不同的目录结构

  • # tree / | more – 执行此命令可浏览整个操作系统的目录结构。通常在根目录结构上做树是没有意义的,除非你处于学习模式并且想了解 Linux 的目录层次结构。
  • # tree $HOME – 使用它来交叉验证主目录结构内容。
  • # tree PROJECT-DIR – 检查项目的目录结构。

2. 改变 tree 命令的输出。

  • # tree -d将只显示目录。即文件将不会显示。
  • # tree -a将显示隐藏文件以及目录和文件。
  • # tree -s将显示文件大小,如下所示。使用此选项时,它会打印出文件的大小以及文件名。
# tree -s
.
|-- [       4096]  Articles
|   `-- [       4096]  Tree
|       `-- [       5489]  article
|-- [       4096]  Compression
|   |-- [       2584]  article
|   `-- [       4223]  article.safe
`-- [       4096]  DiskSpace
|-- [        722]  article
`-- [        530]  old_article
4 directories, 5 files
  • # tree -p将显示权限和文件。使用此选项时,它会打印出文件的权限以及文件名,如下所示。
# tree -p
.
|-- [drwx------]  Articles
|   `-- [drwx------]  Tree
|       `-- [-rw-------]  article
|-- [drwx------]  Compression
|   |-- [-rw-------]  article
|   `-- [-rw-------]  article.safe
`-- [drwx------]  DiskSpace
|-- [-rw-------]  article
`-- [-rw-------]  old_article

4 directories, 5 files

3. 从 tree 命令生成 HTML 输出

您还可以使用 -H 和 -o 选项将 tree 命令的输出重定向到一个 html 文件,如下所示。

# tree -H . -o output.html

 
手册页中选项 -H 的定义:

  • -H baseHREF:打开 HTML 输出,包括 HTTP 引用。对 ftp 站点很有用。baseHREF 在使用 HTML 输出时给出基本 ftp 位置。即本地目录可能是`/local/ftp/pub',但必须引用为`ftp://hostname.organization.domain/pub'

4.根据指定模式显示树输出

使用选项 -P 列出与模式匹配的文件,如下所示。

Syntax: tree -P PATTERN

 

$ tree -P *.safe
.
|-- Articles
|   `-- Tree
|-- Compression
|   `-- article.safe
`-- DiskSpace

 
使用选项 -I 列出与模式不匹配的文件,如下所示。

Syntax: tree -I PATTERN

 

$ tree -I *.safe
.
|-- Articles
|   `-- Tree
|       `-- article
|-- Compression
|   `-- article
|-- DiskSpace
|   |-- article
|   `-- old_article
`-- t.html
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。