Linux 中的 ps 命令用于列出正在运行的进程。 可以通过多种方式使用 ps 命令来获取有关正在运行的进程的各种信息。 我们将看看一些重要的。
Linux中的进程是什么?
进程只是一个正在执行的程序。 程序的每个实例都是一个进程。 您的浏览器、音乐播放器、文本编辑器都是同时运行的进程的示例。
ps 是“进程状态”的缩写
简单的ps
ps 不带任何参数将显示当前会话中正在运行的进程。
$ ps
我们可以看到关于正在运行的进程显示的四个参数:
PID | 进程号 |
打字机 | 终端类型 |
时间 | 进程运行的总时间 |
指令 | 启动进程的命令的名称 |
你注意到一些有趣的事情吗?
第二个过程其实就是ps命令本身。 我们在终端中运行的每个命令都被 Linux 视为一个进程。
获取有关流程的更多信息
ps 命令可以与 -u 选项以显示有关进程的更多信息。
$ ps -u
现在,除了 PID、TTY、TIME、COMMAND,我们还有一些关于进程的其他信息,例如 USER、%CPU、%MEM。
- %CPU 表示进程所占用的计算能力。
- %MEM 表示进程占用的内存量。
- STAT 表示进程状态。
这种显示格式被称为 BSD 风格。
显示当前用户拥有的进程
此命令将显示运行 ps 命令的用户拥有的所有进程。
$ ps -x
这些是用户(在本例中为 root)拥有的进程,这些进程不需要运行。 还有一种方法可以列出其他用户和组的进程,我们将在本文后面介绍。
使用 -u 标志和 -x 标志
ps-ux 结合了前两个命令,正如您可能已经猜到的那样,显示有关用户拥有的所有进程的更多信息。
$ ps -ux
实际上, -u 标志几乎总是与其他标志结合以获取更多信息。
列出系统上的所有进程
此命令将显示系统上的所有进程。 这不会将进程列表限制为当前用户或正在运行的进程。
$ ps -A
或者
$ ps -e
打印进程树
打印进程树的命令是
$ ps -eH
或者
$ ps -e --forest
ps-eH 根据其层次结构显示流程,而 ps-e – 森林 以 ASCII 格式显示进程,以树状方式打印出来。
线程
在 Linux 中,线程是正在执行的程序的一个实例。 一个进程可以有多个线程。
使用 ps 您也可以列出线程。
$ ps -H
此命令将显示线程,就好像它们是进程一样。
$ ps -m
在处理之后显示线程。
$ ps -T
显示线程及其 SPID,这是线程 id,如果只有一个线程,可以与 PID 相同。
完整格式列表和额外的完整格式列表
$ ps -f
此命令以完整格式的列表方式列出有关进程的信息。 完整格式列表显示 UID、PPID、C 和 STIME 以及 TIME、CMD 和 PID。
$ ps -F
此命令列出有关进程中的信息 额外的 全格式上市方式。 我们可以将其与之前的输出进行比较,并查看额外的完整格式列表提供的附加信息。
如您所见,我们现在正在获取 PPID,它是父级的 PID。
RSS 是真正的内存使用量。
- RSS 是真正的内存使用量。
- SZ 是虚拟内存使用量。
- STIME 是进程的开始时间。
此命令可以与 -e 结合使用并用作 ps -eF 以获取有关所有进程的完整格式信息。
很容易将 ps -f 和 ps -F 误认为是同一个命令。
基于PID的识别过程
您可以使用以下命令显示与特定 PID 相对应的进程:
$ ps -fp [pid]
这将显示具有完整格式信息的进程。 您也可以使用 ps -Fp [pid] 显示具有额外完整格式信息的进程。
您可以通过提及以逗号分隔的多个 PID 来获得多个进程。
$ ps -fp [pid1],[pid2],[pid3]
基于父PID(PPID)的进程识别
您可以使用以下命令显示与特定 PPID 相对应的进程:
$ ps -f --ppid [ppid]
这显示了父 ID 为 1 的所有进程。
按命令名显示进程
可以根据命令名称选择进程:
$ ps -C [cmd name]
显示用户或组的所有进程
要显示特定用户的所有进程:
$ ps -U [user_name]
要显示特定组的所有进程:
$ ps -G [group_name]
结论 :
ps 是 Linux 中一个非常有用的命令,可用于管理 Linux 中的进程。 关于 ps 命令还有很多需要了解,这只是用例的一部分。 更多学习材料可以在 ps 的手册页上找到。