Linux pidof命令示例以查找程序/命令的PID

时间:2020-01-09 10:41:51  来源:igfitidea点击:

CentOS Linux服务器,如何使用Shell提示符在基于Linux的系统上找到正在运行的程序的进程ID(PID)?

PID是Linux或者类似Unix的系统上的进程标识号的缩写。
它只不过是一个在创建时自动分配给每个进程的标识号。

您可以使用pidof实用程序按名称查找进程ID(PID)。
请注意,pidof命令仅适用于基于Linux的系统,Unix用户可以尝试ps命令或者pgrep命令来查找正在运行的程序的pid。

语法

基本语法如下:

pidof 命令

或者

pidof 程序

或者

pidof [options] program1 program2 ... programN

注意:您可能需要以root用户身份运行该程序才能找到并杀死特权程序的pid。

pidof命令示例

要查找lighttpd进程的pid,请执行:

$ pidof lighttpd

仅获取名为php5-cgi的程序的pid

缺省情况下,pidof显示命名命令/程序的所有pid:

$ pidof php5-cgi

要只显示该程序的一个pid,请按如下所示通过-s选项:

$ pidof -s php5-cgi

获取脚本的pid

pidof命令将不显示shell/perl/python脚本的pid。
要查找运行名为featch-data的命名脚本的shell的进程ID,请传递-x选项:

$ pidof -x fetch-data

忽略进程

您可以要求pidof commmand忽略或者忽略具有该进程ID的进程。
这对于忽略调用shell或者shell脚本或者特定pid很有用。
在此示例中,找到lighttpd的所有pid,但忽略pid 4242:

# pidof -o 4242 lighttpd

您可以在shell程序脚本中使用特殊的pid%PPID来命名pidof程序的父进程:

#!/bin/bash
# please ignore our pid and get all pids of lighttpd on server
list=$(pidof -o %PPID lighttpd)
 
# .. now  do something on all pids stored in $list
for p in $list
do
  echo "Killing $p..."
  kill -TERM $p
done

找到程序的PID并杀死它

在此示例中,找到nginx服务器的所有PID并将其杀死:

p=$(pidof nginx)
kill $p

在浏览器卡住/冻结后使用kill命令查找Firefox的pid并彻底杀死它

p=$(pidof firefox)
kill -9 $p

pidof命令选项

在pidof(8)命令手册页中:

选项说明
-s仅查找一个pid,即单发。
-c仅返回在相同根目录下运行的进程ID。非root用户将忽略此选项,因为他们将无法检查他们不拥有的进程的当前root目录。
-n避免对位于基于网络的文件系统(如NFS)上的所有二进制文件进行stat(2)系统函数调用。
-x也查找脚本的pid。
-o告诉pidof忽略具有该进程ID的进程。