温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在Linux上以树状查看文件和进程

发布时间:2021-09-04 11:15:10 来源:亿速云 阅读:132 作者:chen 栏目:系统运维

本篇内容主要讲解“怎么在Linux上以树状查看文件和进程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Linux上以树状查看文件和进程”吧!

介绍三个 Linux 命令:ps、pstree 和 tree 以类似树的格式查看文件和进程。

Linux 提供了一些方便的命令,用于以树状分支形式查看文件和进程,从而易于查看它们之间的关系。在本文中,我们将介绍 pspstreetree 命令以及它们提供的一些选项,这些选项可帮助你将注意力集中在要查看的内容上。

ps

我们用来列出进程的 ps 命令有一些有趣的选项,但是很多人从来没有利用过。虽然常用的 ps -ef 提供了正在运行的进程的完整列表,但是 ps -ejH 命令增加了一个不错的效果。它缩进了相关的进程以使这些进程之间的关系在视觉上更加清晰——就像这个片段:

$ ps -ejH  PID  PGID   SID TTY          TIME CMD... 1396  1396  1396 ?        00:00:00   sshd28281 28281 28281 ?        00:00:00     sshd28409 28281 28281 ?        00:00:00       sshd28410 28410 28410 pts/0    00:00:00         bash30968 30968 28410 pts/0    00:00:00           ps

可以看到,正在运行的 ps 进程是在 bash 中运行的,而 bash 是在 ssh 会话中运行的。

-exjf 选项字符串提供了类似的视图,但是带有一些其它细节和符号以突出显示进程的层次结构性质:

$ ps -exjfPPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND...    1  1396  1396  1396 ?           -1 Ss       0   0:00 /usr/sbin/sshd -D 1396 28281 28281 28281 ?           -1 Ss       0   0:00  \_ sshd: shs [priv]28281 28409 28281 28281 ?           -1 S     1000   0:00      \_ sshd: shs@pts/028409 28410 28410 28410 pts/0    31028 Ss    1000   0:00          \_ -bash28410 31028 31028 28410 pts/0    31028 R+    1000   0:00              \_ ps axjf

命令中使用的这些选项表示:

-e  选择所有进程-j  使用工作格式-f  提供完整格式列表-H  分层显示进程(如,树状格式)-x  取消“必须与 tty 相关联”的限制

同时,该命令也有一个 --forest 选项提供了类似的视图。

$ ps -ef --forestUID        PID  PPID  C STIME TTY          TIME CMD...root      1396     1  0 Oct08 ?        00:00:00 /usr/sbin/sshd -Droot     28281  1396  0 12:55 ?        00:00:00  \_ sshd: shs [priv]shs      28409 28281  0 12:56 ?        00:00:00      \_ sshd: shs@pts/0shs      28410 28409  0 12:56 pts/0    00:00:00          \_ -bashshs      32351 28410  0 14:39 pts/0    00:00:00              \_ ps -ef --forest

注意,这些示例只是这些命令如何使用的示例。你可以选择最适合你的进程视图的任何选项组合。

pstree

使用 pstree 命令可以获得类似的进程视图。尽管 pstree 具备了许多选项,但是该命令本身就提供了非常有用的显示。注意,许多父子进程关系显示在单行而不是后续行上。

$ pstree...        ├─sshd───sshd───sshd───bash───pstree        ├─systemd─┬─(sd-pam)        │         ├─at-spi-bus-laun─┬─dbus-daemon        │         │                 └─3*[{at-spi-bus-laun}]        │         ├─at-spi2-registr───2*[{at-spi2-registr}]        │         ├─dbus-daemon        │         ├─ibus-portal───2*[{ibus-portal}]        │         ├─pulseaudio───2*[{pulseaudio}]        │         └─xdg-permission-───2*[{xdg-permission-}]

通过 -n 选项,pstree 以数值(按进程 ID)顺序显示进程:

$ pstree -nsystemd─┬─systemd-journal        ├─systemd-udevd        ├─systemd-timesyn───{systemd-timesyn}        ├─systemd-resolve        ├─systemd-logind        ├─dbus-daemon        ├─atopacctd        ├─irqbalance───{irqbalance}        ├─accounts-daemon───2*[{accounts-daemon}]        ├─acpid        ├─rsyslogd───3*[{rsyslogd}]        ├─freshclam        ├─udisksd───4*[{udisksd}]        ├─networkd-dispat        ├─ModemManager───2*[{ModemManager}]        ├─snapd───10*[{snapd}]        ├─avahi-daemon───avahi-daemon        ├─NetworkManager───2*[{NetworkManager}]        ├─wpa_supplicant        ├─cron        ├─atd        ├─polkitd───2*[{polkitd}]        ├─colord───2*[{colord}]        ├─unattended-upgr───{unattended-upgr}        ├─sshd───sshd───sshd───bash───pstree

使用 pstree 时可以考虑的一些选项包括 -a(包括命令行参数)和 -g(包括进程组)。

以下是一些简单的示例(片段)。

命令 pstree -a 的输出内容:

└─wpa_supplicant -u -s -O /run/wpa_supplicant

命令 pstree -g 的输出内容:

├─sshd(1396)───sshd(28281)───sshd(28281)───bash(28410)───pstree(1115)

tree

虽然 tree 命令听起来与 pstree 非常相似,但这是用于查看文件而非进程的命令。它提供了一个漂亮的树状目录和文件视图。

如果你使用 tree 命令查看 /proc 目录,你显示的开头部分将类似于这个:

$ tree /proc/proc├── 1│   ├── attr│   │   ├── apparmor│   │   │   ├── current│   │   │   ├── exec│   │   │   └── prev│   │   ├── current│   │   ├── display│   │   ├── exec│   │   ├── fscreate│   │   ├── keycreate│   │   ├── prev│   │   ├── smack│   │   │   └── current│   │   └── sockcreate│   ├── autogroup│   ├── auxv│   ├── cgroup│   ├── clear_refs│   ├── cmdline...

如果以 root 权限运行这条命令(sudo tree /proc),你将会看到更多详细信息,因为 /proc 目录的许多内容对于普通用户而言是无法访问的。

命令 tree -d 将会限制仅显示目录。

$ tree -d /proc/proc├── 1│   ├── attr│   │   ├── apparmor│   │   └── smack│   ├── fd [error opening dir]│   ├── fdinfo [error opening dir]│   ├── map_files [error opening dir]│   ├── net│   │   ├── dev_snmp6│   │   ├── netfilter│   │   └── stat│   ├── ns [error opening dir]│   └── task│       └── 1│           ├── attr│           │   ├── apparmor│           │   └── smack...

使用 -f 选项,tree 命令会显示完整的路径。

$ tree -f /proc/proc├── /proc/1│   ├── /proc/1/attr│   │   ├── /proc/1/attr/apparmor│   │   │   ├── /proc/1/attr/apparmor/current│   │   │   ├── /proc/1/attr/apparmor/exec│   │   │   └── /proc/1/attr/apparmor/prev│   │   ├── /proc/1/attr/current│   │   ├── /proc/1/attr/display│   │   ├── /proc/1/attr/exec│   │   ├── /proc/1/attr/fscreate│   │   ├── /proc/1/attr/keycreate│   │   ├── /proc/1/attr/prev│   │   ├── /proc/1/attr/smack│   │   │   └── /proc/1/attr/smack/current│   │   └── /proc/1/attr/sockcreate...

分层显示通常可以使进程和文件之间的关系更容易理解。可用选项的数量很多,而你总可以找到一些视图,帮助你查看所需的内容。

到此,相信大家对“怎么在Linux上以树状查看文件和进程”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI