前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你知道如何在 Linux 下快速找出所有运行的进程吗,学会这个方法后整个世界都一目了然了!

你知道如何在 Linux 下快速找出所有运行的进程吗,学会这个方法后整个世界都一目了然了!

作者头像
iMike
发布2020-02-10 11:58:31
1.2K0
发布2020-02-10 11:58:31
举报
文章被收录于专栏:运维之美

在 Linux 机器上工作时,有时你可能需要找出当前正在运行的进程。你可以使用许多命令来查找有关正在运行的进程的信息,其中 pstop 是最常用的命令。

在本文中,我们将讨论 pstree 命令。它类似于 ps ,但没有列出正在运行的进程,而是将它们显示在一个目录树中。树状格式是以一种更方便的方式来显示进程层次结构,并使输出在视觉上更具吸引力。

如何使用 pstree 命令

pstree 命令的一般语法如下:

代码语言:javascript
复制
ps [OPTIONS] [USER or PID]

以最简单的形式调用时没有任何选项或参数,pstree 命令将显示所有正在运行的进程的分层树结构。

代码语言:javascript
复制
$ pstree
systemd─┬─VBoxService───7*[{VBoxService}]
        ├─accounts-daemon───2*[{accounts-daemon}]
        ├─2*[agetty]
        ├─atd
        ├─cron
        ├─dbus-daemon
        ├─irqbalance───{irqbalance}
        ├─2*[iscsid]
        ├─lvmetad
        ├─lxcfs───2*[{lxcfs}]
        ├─networkd-dispat───{networkd-dispat}
        ├─nginx───2*[nginx]
...

目录树中的 top/root 项目是所有系统进程的父进程。在此示例中为 systemd,这是系统启动时启动的第一个进程。

pstree 通过将相同的分支放在方括号之间并为它们加上代表分支数的整数作为前缀来合并它们,这使得输出更具可读性和视觉吸引力。以下是显示如何使用方括号的示例:

代码语言:javascript
复制
$ pstree
├─2*[agetty]

要禁用相同分支的合并,请使用 -c 选项。

代码语言:javascript
复制
$ pstree -c
├─agetty        
├─agetty

每个进程的线程显示在父进程下,并使用花括号内的进程名称显示。

代码语言:javascript
复制
├─lxcfs───2*[{lxcfs}]

你可以使用 -t 选项显示完整的线程名称,如果要隐藏线程并仅显示进程,请使用 -T 选项。

通常,pstree 会在屏幕上显示多行输出。要一次查看输出一页,你可以将其结果通过管道传递到 less 命令。

代码语言:javascript
复制
$ pstree | less

如果使用用户名作为参数,则 pstree 仅显示该用户拥有的进程。例如,以下命令将仅显示那些由名为 linuxize 的用户启动的进程。

代码语言:javascript
复制
$ pstree linuxize

如果将 PID 指定为参数,则 pstree 将显示一棵以给定进程为树根的目录树。

代码语言:javascript
复制
$ pstree 1943
sshd───bash───pstree

要显示给定进程的父进程,你可以使用 -s 选项,并在其后跟进程 PID

代码语言:javascript
复制
$ pstree -s 1943
systemd───sshd───sshd───bash───pstree

显示 PID 和 PGID

通常,当运行 pstree 命令时,用户寻找的最重要的信息是进程 ID。例如,你知道 PID 即可让你杀死发生故障的进程。

我们可以通过 -p 选项让 pstree 显示进程的 PID

代码语言:javascript
复制
# 每个进程或线程后的括号中均显示的是 PID。
$ pstree -p
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956)
           │                  ├─{VBoxService}(957)
           │                  ├─{VBoxService}(958)
           │                  ├─{VBoxService}(959)
           │                  ├─{VBoxService}(960)
           │                  ├─{VBoxService}(961)
           │                  └─{VBoxService}(962)
...

默认情况下,pstree 按名称对具有相同父项的进程进行排序。如果你想按 PID 排序,你则可以使用 -n 选项。

代码语言:javascript
复制
$ pstree -pn

一个或多个进程组 ID 是进程组的第一个成员的进程 ID。如果你要查看 PGID,可以使用 -g 选项。

代码语言:javascript
复制
# 每个进程或线程之后的括号中也显示了 PID。
$ pstree -g
systemd(1)─┬─VBoxService(954)─┬─{VBoxService}(954)
           │                  ├─{VBoxService}(954)
           │                  ├─{VBoxService}(954)
           │                  ├─{VBoxService}(954)
           │                  ├─{VBoxService}(954)
           │                  ├─{VBoxService}(954)
           │                  └─{VBoxService}(954)
...

注:显示 PIDPGID 时,将隐式禁用默认的进程合并。

显示命令行参数

默认情况下,pstree 不会向你显示正在运行的进程的命令行参数。要查看进程是如何开始的,你可以使用 -a 选项。

代码语言:javascript
复制
$ pstree -a
...
  ├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220
  ├─agetty -o -p -- \\u --noclear tty1 linux
...

高亮

pstree 还可以使你突出显示进程以更好地呈现视觉效果。-h 选项指示 pstree 高亮显示当前进程及其所有父进程。

代码语言:javascript
复制
$ pstree -h

如果要高亮显示特定的进程,你可以使用 -H 选项,然后加上进程 ID。

代码语言:javascript
复制
$ pstree -H PID_NUMBER

结论

至此,我们就讲完了以树结构的形式显示正在运行的进程的 pstree 命令。有关所有可用 pstree 选项的信息,你可以通过在终端中输入 man pstree 进行查看。

本文翻译自:「Linuxize」,原文:https://url.cn/57pdD5M,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奇妙的Linux世界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何使用 pstree 命令
  • 显示 PID 和 PGID
  • 显示命令行参数
  • 高亮
  • 结论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档