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的进程。 |