pidof是一个命令行程序,可让您找到正在运行程序的进程ID。在教程中,我们将说明如何在Linux 使用pidof命令。

对于基于Red Hat和Debian的发行版,pidof命令有不同的实现。在Red Hat发行版中,pidof命令是procps-ng软件包的一部分。

在Debian它是sysvinit-utils的一部分。 我们将介绍两种实现方式共有的选项。

pidof命令

pidof命令的语法是pidof [OPTIONS] PROGRAM_NAME。命令接受零个或多个进程名称作为参数。通常您都是将一个名称传递给pidof

在不带任何选项运行pidof命令时,将打印与指定进程名称匹配的进程PID。例如命令pidof sshd将会查找SSH服务进程PID。

如果有正在运行的进程名称与sshd匹配,则其PID将打印在终端屏幕。如果未找到匹配的进程PID,则输出为空。

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

pidof sshd
4382 4368 811

为确保仅显示要搜索的进程的PID,请使用进程的完整路径名作为参数。

例如,如果您有两个名称相同的进程位于两个不同的目录中,pidof将显示两个正在运行进程的PID。可以使用-s选项强制pidof仅显示一个PID。

-o选项可让您排除具有指定PID的进程,也可以使用%PPID指定父进程的PID排除进程。

要仅返回使用相同根目录运行的进程的PID,请使用-c选项。此选项仅在以root用户或具有sudo权限运行pidof时起作用。

pidof -s program_name
pidof -o pid program_name
pidof -c pid program_name

pidof示例

示例展示如何组合使用pidof命令和kill命令来终止进程。假设Firefox浏览器已无响应,因此您需要终止Firefox进程。

首先要做是运行命令pidof firefox找到Firefox进程的PID。命令将打印所有Firefox进程。

一旦您知道Firefox进程的PID,请运行Kill命令发送SEGTERM信号终止所有PID,您还可以使用命令替换表达式$(...)在一个命令中终止多个PID。

pidof firefox
sudo kill -9 2551 2514 1963 1856 1771
sudo kill -9 $(pidof firefox)

结论

pidof命令用于查找指定正在运行进程PID。pidof是一个简单的命令,没有太多选项。

通常,您只需使用pidof命令搜索的程序的名称查找进程pid。如果您有任何疑问或反馈,请随时发表评论。