Linux pidof 命令示例:查找程序/命令的 PID
我是 Linux 系统的新用户,我在服务器上使用 CentOS Linux。如何使用 shell 提示符在基于 Linux 的系统上查找正在运行的程序的进程 ID (PID)?
PID 是 Linux 或类 Unix 系统上进程标识号的缩写。它只是每个进程在创建时自动分配的标识号。
pidof 命令详细信息 | |
---|---|
描述 | 获取正在运行的程序的进程 ID |
类别 | 流程管理 |
难度等级 | 简单的 |
Root 权限 | 不 |
预计阅读时间 | 3 分钟 |
目的
在 Linux 上通过名称查找正在运行的程序的进程 ID。
句法
基本语法如下:
pidof command
或者
pidof program
或者
pidof [options] program1 program2 ... programN
注意:您可能需要以 root 用户身份运行此程序来查找并终止特权程序的 pid。
pidof 命令示例
要查找 lighttpd 进程的 pid,请输入:
$ pidof lighttpd
示例输出:
仅获取名为 php5-cgi 的程序的一个 pid
默认情况下,pidof 显示命名命令/程序的所有 pid:
$ pidof php5-cgi
示例输出(见图 01):
2427 2426 2424 2423 2418 2387 2386 2385 2384 2383 2241 2240 2238 2237 2223
要仅显示程序的一个 pid,请传递-s以下选项:
$ pidof -s php5-cgi
示例输出(见图 01):
2427
获取脚本的 pid
pidof 命令不会显示 shell/perl/python 脚本的 pid。要查找运行名为 featch-data 的脚本的 shell 的进程 ID,请传递以下-x选项:
$ pidof -x fetch-data
省略流程
您可以要求 pidof 命令忽略或省略具有该进程 ID 的进程。这对于忽略调用 shell 或 shell 脚本或特定 pid 很有用。在此示例中,查找 lighttpd 的所有 pid,但省略 pid # 4242:
# pidof -o 4242 lighttpd
您可以使用特殊 pid %PPID 在 shell 脚本中命名 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
找到 Firefox 的 pid,并使用kill 命令强制终止它,因为浏览器已卡住/冻结
p=$(pidof firefox) kill -9 $p
pidof 命令选项
从命令手册页:
选项 | 描述 |
---|---|
-s | 仅找到一个 pid,即单次拍摄。 |
-c | 仅返回使用相同根目录运行的进程 ID。非 root 用户将忽略此选项,因为他们无法检查不属于他们的进程的当前根目录。 |
-n | 避免对位于基于网络的文件系统(如 NFS)的所有二进制文件进行 stat(2) 系统函数调用。 |
-x | 也查找脚本的 pid。 |
-o | 告诉 pidof 省略具有该进程 id 的进程。 |