如何使用pidof命令
对于基于Red Hat和Debian的发行版,有pidof的不同实现。 在Red Hat发行版中,pidof命令是procps-ng软件包的一部分,而在Debian上,它是sysvinit-utils的一部分。 我们将介绍两种实现方式共有的选项。
pidof命令的语法如下:
pidof [选项] 程序名称
该命令接受零个或多个名称作为参数,但是通常,您只将一个名称传递给pidof。
不带任何选项调用时,pidof将打印与给定名称匹配的所有正在运行的程序的PID。 例如,要查找vim的PID,应运行:
[linuxidc@linux:~/www.linuxidc.com]$ pidof vim
4942
如果有名称与sshd匹配的正在运行的进程,则其PID将显示在屏幕上。 如果未找到匹配项,则输出将为空。
输出
4942
当至少一个正在运行的程序与请求的名称匹配时,pidof返回0。 否则,退出代码为1。在shell脚本中使用时,这很有用。
为确保仅显示要搜索的程序的PID,请使用该程序的完整路径名作为参数。 例如,如果您在两个不同的目录中有两个同名的运行程序,则pidof将显示两个运行程序的PID。
默认情况下,显示匹配的正在运行程序的所有PID。 使用-s选项强制pidof只显示一个PID:
$pidof -s 程序名称
-o选项允许您从命令输出中排除具有给定PID的进程:
$pidof -o pid 程序名称
当使用-o选项调用pidof时,可以使用名为%PPID的特殊PID来表示调用Shell程序或Shell脚本。
要仅返回使用相同根目录运行的进程的PID,请使用-c选项。
该选项仅适用于以root或sudo用户身份运行的pidof:
$pidof -c pid 程序名称
pidof命令的用法示例
以下示例显示了如何结合使用pidof命令和kill命令来终止程序。
假设Firefox浏览器已无响应,并且您需要终止Firefox进程。 首先,使用pidof查找PID:
[linuxidc@linux:~/www.linuxidc.com]$ pidof firefox
该命令将打印所有Firefox进程:
输出
5231 5207 5166 5131 5090
一旦知道Firefox处理了PID,就发送SEGTERM信号终止所有PID:
[linuxidc@linux:~/www.linuxidc.com]$ sudo kill -9 5231 5207 5166 5131 5090
您还可以使用命令替换表达式$ $(...),用一个命令终止程序:
[linuxidc@linux:~/www.linuxidc.com]$ sudo kill -9 $(pidof firefox)
总结
pidof命令用于查找特定正在运行的程序的PID。
pidof是一个简单的命令,没有太多选项。 通常,您只会使用要搜索的程序的名称来调用pidof。
如果您有任何疑问或反馈,请随时发表评论。