![pidof命令](https://www.alaica.com/wp-content/uploads/linux-17.jpg)
我是一个新的 Linux 系统用户,我在服务器上使用 CentOS Linux。如何使用 shell 提示符在基于 Linux 的系统上查找正在运行的程序的进程 ID (PID)?
PID 是 Linux 或类 Unix 系统上进程标识号的缩写。它只不过是在创建每个进程时自动分配给该进程的一个标识号。
pidof命令详细信息 | |
---|---|
描述 | 获取正在运行的程序的进程ID |
类别 | 流程管理 |
难度级别 | 简单的 |
根权限 | 不 |
美东时间。阅读时间 | 3分钟 |
您可以使用pidof实用程序按名称查找进程 ID (PID)。请注意,pidof 命令仅适用于基于 Linux 的系统,Unix 用户可以尝试 ps 命令或 pgrep 命令来查找正在运行的程序的 pid。
目的
在 Linux 上通过名称查找正在运行的程序的进程 ID。
句法
基本语法如下:
pidof command
或者
pidof program
或者
pidof [options] program1 program2 ... programN
注意:您可能需要以 root 用户身份运行此程序来查找并杀死特权程序的 pid。
pidof 命令示例
要查找 lighttpd 进程的 pid,请输入:
$ pidof lighttpd
示例输出:
![图 01:运行中的 pidof 命令](https://www.alaica.com/wp-content/uploads/linux-18.jpg)
图 01:运行中的 pidof 命令
只获取名为 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
您可以在shell脚本中使用特殊的pid %PPID来命名pidof程序的父进程:
#!/bin/bash # 请忽略我们的 pid 并获取服务器 列表上 lighttpd 的所有 pid =$ ( pidof -o % PPID lighttpd ) # .. 现在对 $list 中存储的所有 pid 执行某些操作 for p in $list do echo "Killing $p ..." Kill -TERM $p done
找到一个程序的pid并杀死它
在本例中,找到 nginx 服务器的所有 PID 并将其杀死:
p =$ ( pidof nginx ) 杀死 $p
找到 firefox 的 pid,并在浏览器卡住/冻结时使用kill命令强力杀死它
p =$ ( pidof firefox ) 杀死 -9 $p
pidof 命令选项
从命令手册页:
选项 | 描述 |
---|---|
-s | 只找到一个pid,即单次射击。 |
-c | 仅返回在同一根目录下运行的进程 ID。非 root 用户将忽略此选项,因为他们将无法检查不属于他们的进程的当前根目录。 |
-n | 避免对位于基于网络的文件系统(如 NFS)上的所有二进制文件调用 stat(2) 系统函数。 |
-x | 也可以找到脚本的 pid。 |
-o | 告诉 pidof 忽略具有该进程 ID 的进程。 |