Linux中的Pidof命令

时间:2020-03-05 15:29:09  来源:igfitidea点击:

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

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

如何使用“ pidof”命令

对于基于Red Hat和Debian的发行版,有'pidof'的不同实现。
在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

当使用'-o'选项调用'pidof'时,可以使用名为'%PPID'的特殊PID,它表示调用shell或者shell脚本。

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

该选项仅适用于以root或者sudo用户身份运行的'pidof':

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)