【linux命令讲解大全】115.进程与目录的树状结构展示:pstree和tree命令详解

2024-03-02 13:57:57 浏览数 (1)

pstree

以树状图的方式展现进程之间的派生关系

补充说明

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

语法

pstree(选项)

选项

  • -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
  • -c:不使用精简标示法;
  • -G:使用VT100终端机的列绘图字符;
  • -h:列出树状图时,特别标明现在执行的程序;
  • -H<程序识别码>:此参数的效果和指定-h参数类似,但特别标明指定的程序;
  • -l:采用长列格式显示树状图;
  • -n:用程序识别码排序。预设是以程序名称来排序;
  • -p:显示程序识别码;
  • -u:显示用户名称;
  • -U:使用UTF-8列绘图字符;
  • -V:显示版本信息。

实例

显示当前所有进程的进程号和进程id:

代码语言:javascript复制
pstree -p

显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示:

代码语言:javascript复制
pstree -a

获取 SSH 会话的 PID:

代码语言:javascript复制
pstree -p | grep ssh

# |-sshd(1221)- -sshd(2768)---bash(2770)- -grep(2810)
# |            `-sshd(2807)---sshd(2808)

从上方的输出中,你可以看到 sshd 进程与分支的树形图。sshd 的主进程是 sshd(1221),另两个分支分别为 sshd(2768)sshd(2807)

tree

树状图列出目录的内容

补充说明

tree命令以树状图列出目录的内容。

语法

tree(选项)(参数)

选项

列表选项
  • -a:显示所有文件和目录。
  • -d:显示目录名称而非文件。
  • -l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录。
  • -f:在每个文件或目录之前,显示完整的相对路径名称。
  • -x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。
  • -L level:限制目录显示层级。
  • -R:Rerun tree when max dir level reached.
  • -P pattern<范本样式>只显示符合范本样式的文件和目录名称。
  • -I pattern:Do not list files that match the given pattern。
  • --ignore-case:Ignore case when pattern matching。
  • --matchdirs:Include directory names in -P pattern matching。
  • --noreport:Turn off file/directory count at end of tree listing。
  • --charset X:Use charset X for terminal/HTML and indentation line output。
  • --filelimit #:Do not descend dirs with more than # files in them。
  • --timefmt <f>:Print and format time according to the format 。
  • -o filename:Output to file instead of stdout。
文件选项
  • -q:用“?”号取代控制字符,列出文件和目录名称。
  • -N:直接列出文件和目录名称,包括控制字符。
  • -Q:Quote filenames with double quotes。
  • -p:列出权限标示。
  • -u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码。
  • -g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码。
  • -s:列出文件和目录大小。
  • -h:Print the size in a more human readable way。
  • --si:Like -h, but use in SI units (powers of 1000)。
  • -D:列出文件或目录的更改时间。
  • -F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*“,”/“,”@“,”|"号。
  • --inodes:Print inode number of each file。
  • --device:Print device ID number to which each file belongs。
排序选项
  • -v:Sort files alphanumerically by version。
  • -t:用文件和目录的更改时间排序。
  • -c:Sort files by last status change time。
  • -U:Leave files unsorted。
  • -r:Reverse the order of the sort。
  • --dirsfirst:List directories before files (-U disables)。
  • --sort X:Select sort: name,version,size,mtime,ctime。
图形选项
  • -i:不以阶梯状列出文件和目录名称。
  • -A:使用ASNI绘图字符显示树状图而非以ASCII字符组合。
  • -S:Print with CP437 (console) graphics indentation lines。
  • -n:Turn colorization off always (-C overrides)。
  • -C:在文件和目录清单加上色彩,便于区分各种类型。
XML / HTML / JSON选项
  • -X:Prints out an XML representation of the tree。
  • -J:Prints out an JSON representation of the tree。
  • -H baseHREF:Prints out HTML format with baseHREF as top directory。
  • -T string:Replace the default HTML title and H1 header with string
  • --nolinks:Turn off hyperlinks in HTML output。
杂项选项
  • --version:输入版本信息。
  • --help:打印使用帮助信息。
  • --:Options processing terminator。

参数

目录:执行tree指令,它会列出指定目录下的所有文件,包括子目录里的文件。

实例

列出目录/private/第一级文件名:

代码语言:javascript复制
tree  /private/ -L 1

忽略文件夹:

代码语言:javascript复制
tree -I node_modules # 忽略当前目录文件夹node_modules
tree -P node_modules # 列出当前目录文件夹node_modules的目录结构
tree -P node_modules -L 2 # 显示目录node_modules两层的目录树结构
tree -L 2 > /home/www/tree.txt # 当前目录结果存到 tree.txt 文件中

忽略多个文件夹:

代码语言:javascript复制
tree -I 'node_modules|icon|font' -L 2

非树状结构列出目录/private/下的所有文件:

代码语言:javascript复制
tree -if /private/
/private
/private/a1
/private/a2
/private/etc
/private/etc/b1
/private/etc/b2
/private/tftpboot

0 人点赞