Linux 中的 pidof 命令

pidof  是一个命令行实用程序,可让您找到正在运行的程序的进程 ID 。

在本文中,我们将解释如何使用 Linux 中的 pidof 命令。

如何使用 pidof 命令

pidof 基于 Red Hat 和 Debian 的发行版有不同的实现。在 Red Hat 发行版中, pidof 命令是 procps-ng 软件包的一部分,而在 Debian 中,它是 sysvinit-utils 的一部分。我们将介绍两种实现方式共有的选项。

pidof 命令的语法如下:

pidof [OPTIONS] PROGRAM_NAME

该命令接受零个或多个名称作为参数,但是通常,您只将一个名称传递给 pidof

不带任何选项调用时, pidof 将打印与给定名称匹配的所有正在运行程序的 PID 。例如,要查找 SSH 服务器的 PID ,应运行:

pidof sshd

如果有名称匹配的正在运行的进程 sshd ,则其 PID 将显示在屏幕上。如果未找到匹配项,则输出将为空。

4382 4368 811

pidof 当至少一个正在运行的程序与请求的名称匹配时,返回 0 。否则,退出代码为 1 。在 shell 脚本中使用时,这很有用。

为确保仅显示要搜索的程序的 PID ,请使用该程序的完整路径名作为参数。例如,如果您有两个同名的运行程序位于两个不同的目录中, pidof 则会显示两个运行程序的 PID 。

默认情况下,显示匹配的正在运行程序的所有 PID 。使用 -s 选项强制 pidof 仅显示一个 PID :

pidof -s program_name

-o 选项允许您从命令输出中排除具有给定 PID 的进程:

pidof -o pid program_name

pidof 使用 -o 选项调用时,可以使用特殊的 PID 命名 %PPID , PID  代表调用外壳程序或外壳程序脚本。

要仅返回使用相同根目录运行的进程的 PID ,请使用 -c 选项。

此选项仅以 root 或 sudo 用户身份运行:

pidof -c pid program_name

pidof 命令用法示例

以下示例显示如何结合使用 pidof 命令和 kill 命令来终止程序。

假设 Firefox 浏览器已无响应,并且您需要终止 Firefox 进程。首先,使用以下 pidof 命令找到 PID  :

pidof firefox

该命令将打印所有 Firefox 进程:

2551 2514 1963 1856 1771

一旦知道了 Firefox 的 PID ,就发送 SEGTERM 信号终止所有 PID  :

sudo kill -9 2551 2514 1963 1856 1771

您还可以使用命令替换表达式 $(...) ,在一个命令中终止程序:

sudo kill -9 $(pidof firefox)

结论

pidof 命令用于查找特定正在运行的程序的 PID 。

pidof 是一个简单的命令,没有太多选择。通常, pidof 仅使用要搜索的程序的名称作为参数。