如何在 Linux 中查找进程的 PID 和 PPID

如果您需要管理系统上运行的进程或与之交互,了解进程的 PID 和 PPID 会很有帮助。

在 Linux 中,有很多方法可以获取给定进程的 PID(进程 ID)和 PPID(父进程 ID)。

命令描述
pidof 进程名使用确切的进程名称
pgrep 进程名称返回所有匹配的 PID
ps -o ppid= -p PID从 PID 获取 PPID
$$当前进程/shell的PID
${PPID}当前进程父进程的PID

我将详细解释这些命令,但在此之前快速回顾一下进程、PID 和 PPID。

Linux进程基础

在您的系统上运行的所有东西都是通过称为进程的东西运行的,它只是程序的运行实例。

在您的系统上运行的所有进程都被分配了标识符。 如果您想监控过程,这些可能会有所帮助(对于 example,例如查看它正在使用多少内存或 CPU),或者如果它开始挂起或只是表现得有点古怪,你可能想结束它。

附加到所有这些进程的标识符称为 PID 和 PPID。

什么是 PID?

PID 代表“进程 ID”。 同样,这只是程序开始运行时附加到程序的标识符,如果您需要以一种或另一种方式与进程交互,它会很有帮助。

什么是 PPID?

PPID 与 PID 密切相关。 PPID 代表“父进程 ID”,如果您还没有得到它,它只是代表创建您正在检查的进程的进程。

为了 example,假设我们有两个进程。 一个名为“spawner”,进程 ID(或 PID)为 7234。我们的第二个进程“电子邮件客户端”在创建时的进程 ID 为 7456。 我们的 spawner 程序启动我们的电子邮件客户端,导致我们的电子邮件客户端的 PID 为 7456,PPID 为 7234,因为生成器(其 PID 为 7234)是生成电子邮件客户端的原因。

现在你已经刷了基础,让我们看看如何在 Linux 中获取进程 ID。

获取进程的PID

这里重要的是要知道要查找其 PID 的进程的名称。

如果您知道确切的进程名称,您可以使用 pidof 命令:

pidof exact_process_name

说起来容易做起来难,因为您可能并不总是知道确切的进程名称。 这里的好处是 pidof 命令与制表符完成一起使用,因此如果您知道进程名称的开头几个字母,则可以单击制表符以获取匹配的建议。

pidof 命令与制表符完成一起使用

但是,如果进程名称与您认为的名称不匹配,这可能并不总是有效。 为了 example过程为 Edge Linux 上的浏览​​器称为 msedge. 它不是以“edge”开头的,如果您专注于“edge”,则选项卡完成将不起作用。

因此,您可以做的是在 Linux 中使用 ps 命令列出所有用户的所有正在运行的进程,然后在输出上使用 grep 来过滤结果。

ps aux | grep -i partial_process_name

有一个专门的命令结合了 ps 和 grep 命令的特性,不出所料,它被称为 pgrep

pgrep partial_or_exact_process_name

默认输出仅显示 PID,没有任何有关进程的信息。 如果为您的搜索词返回多个进程 ID,这可能会很麻烦。

因此,我建议使用列表功能来确保您获得所需进程的 PID。

pgrep -l partial_or_exact_process_name
pgrep 命令 example

您也可以使用 top 命令获取进程信息,但不能在脚本中使用。

?您可以使用 pstree 命令获取 Linux 系统上所有正在运行的进程的 PID: pstree -p -a

从子进程的 PID 获取 PPID

一旦知道进程的 PID,就可以轻松找到该进程的 PPID。

您可以简单地运行以下命令,替换 PID 使用当前进程(子)ID:

ps -o ppid= -p PID

在 shell 中,上述命令和 ${PPID} 都应该返回相同的输出:

这就是寻找 PID 和 PPID 的全部内容!

查看当前运行进程的PID和PPID

如果您在 Bash 等 shell 中,则非常容易找到调用进程(通常是 shell)的 PI​​D 和 PPID。

Bash 将 PID 的值存储在 $$ 变量,以及下的 PPID ${PPID} 多变的:

# Prints the PID.
echo "$$"

# Prints the PPID.
echo "${PPID}"

查找当前进程的 PID 和 PPID 的命令。

这样就可以得到shell和subshel​​l的进程ID。

当前shell的PID和PPID

就这么简单! 查找其他进程的 PID 和 PPID 也并不难。

总结

您现在应该知道在系统上找到运行进程所需的 PID 和 PPID 所需的一切。

如果您需要任何帮助以使某些工作正常进行,或者只是有一些剩余的问题,请随时在下面的评论中留下它和其他任何内容。