我使用过的Linux命令之pidof - 找出正在运行程序的进程PID

Linux pidof 命令

我使用过的Linux命令之pidof - 找出正在运行程序的进程PID

本文链接:http://codingstandards.iteye.com/blog/841123   (转载请注明出处)

用途说明

pidof用于找出正在运行的程序的进程PID(find the process ID of a running program.),程序可以是一个二进制执行程序,也可以是一个shell脚本。如果是找出java程序的进程PID,pidof就无能为力了,可以使用ps -ef|grep java或jps -l来查看java进程的信息。通常找出进程PID的目的是确认程序是否在运行、或者为了把它杀掉、或者发送一个信号给它。

 

常用参数

格式:pidof program

找出program程序的进程PID,如果有多个就会全部列出,program不能是shell脚本名称。

 

格式:pidof -s program

找出program程序的进程PID,只列出一个。(Single shot - this instructs the program to only return one pid.)

 

格式:pidof -x script

找出shell脚本script的进程PID。

 

参数:-o omitpid

参数:-o omitpid1 -o omitpid2

在列出的进程PID中忽略omitpid。可以有多个。

 

参数:-s

只列出一个。

 

使用示例

示例一

[root@smsgw root]# pidof pidof
24386
[root@smsgw root]# pidof console

[root@smsgw root]# pidof bash
8681 17650 28223 16840
[root@smsgw root]# pidof man

[root@smsgw root]# pidof java
8882 27498 27482 30945 940 24465 23811 23068 2171 7022 24641 32656 32526
[root@smsgw root]# jps -l
25442 sun.tools.jps.Jps

注:在这台机器上jps似乎不能很好的看java进程信息。
[root@smsgw root]#

 

示例二 查看shell脚本的进程PID

下面演示了怎么查看脚本的PID的,可以发现通过不含路径的脚本文件名称、或者执行时的路径来查看,其他方式不行。

[root@web ~]# ls /opt/imx/imx_web3q/update.sh
/opt/imx/imx_web3q/update.sh
[root@web ~]# ps -ef|grep update.sh
root     17989 17963  0 Dec09 pts/7    00:00:05 /bin/sh ./update.sh
root     29329 28002  0 20:10 pts/2    00:00:00 grep update.sh
[root@web ~]# pidof update.sh

[root@web ~]# pidof -x update.sh
17989
[root@web ~]# pidof -x /opt/imx/imx_web3q/update.sh

[root@web ~]# pidof ./update.sh

[root@web ~]# pidof -x ./update.sh
17989
[root@web ~]#

 

问题思考

相关资料

【1】hscripts.com Linux pidof 命令? 是什么

【2】阿勃的 blog [翻译] pidof 命令手册

 

返回 我使用过的Linux命令系列总目录

 

### 获取与分析程序进程 PID 的相关信息和工具 在 Unix/Linux 系统中,每个运行进程都有一个唯一的标识符,称为进程 ID(PID)。获取和分析 PID 是调试、性能优化以及系统监控中的常见需求。以下是一些常用的方法和工具。 #### 获取当前进程PID 在 C 语言中,可以使用 `getpid()` 函数来获取当前进程PID: ```c #include <unistd.h> #include <stdio.h> int main() { pid_t pid = getpid(); // 获取当前进程PID printf("Current PID: %d\n", pid); return 0; } ``` 在 Python 中,可以通过 `os` 模块实现类似功能: ```python import os print(f"Current PID: {os.getpid()}") ``` #### 查找正在运行进程PID 1. **`ps` 命令** `ps` 是一个常用的命令行工具,用于列出当前运行进程信息。例如: ```bash ps aux | grep <process_name> ``` 这将显示与指定进程名称匹配的所有进程,并列出其 PID。 2. **`pgrep` 命令** `pgrep` 可以根据名称或其他属性直接查找进程PID: ```bash pgrep -f <process_name> ``` 3. **`top` 命令** `top` 提供了一个动态的实时视图,显示了系统中所有运行进程及其资源占用情况。按下 `H` 键可切换到线程模式查看线程级别的 PID(LWP)[^2]。 4. **`htop` 命令** `htop` 是 `top` 的增强版,界面更友好,支持颜色和鼠标操作,安装后可以直接使用: ```bash htop ``` 5. **`pidof` 命令** 如果知道进程名称,可以使用 `pidof` 快速获取其 PID: ```bash pidof <process_name> ``` #### 分析进程堆栈信息 1. **`gstack` 工具** `gstack` 是 GNU 提供的一个轻量级工具,用于打印进程的调用堆栈。它可以用来诊断高 CPU 占用或死锁问题。例如: ```bash gstack <pid> ``` 若需分析具体线程,可结合 `top -Hp <pid>` 找出占用 CPU 最高的线程 LWP,然后使用 `gstack` 分析该线程状态[^2]。 2. **`pstack` 工具** `pstack` 是 `gstack` 的别名,功能相同,可用于快速查看堆栈跟踪。 3. **`gdb` 调试器** 使用 `gdb` 可以附加到指定 PID进程上,并执行堆栈跟踪、断点设置等高级调试操作: ```bash gdb -p <pid> ``` 在 GDB 提示符下输入 `bt` 即可查看当前堆栈信息。 #### 其他相关工具 - **`ltrace`**:跟踪进程对共享库函数的调用。 - **`strace`**:跟踪系统调用和信号。 - **`proc/<pid>/` 目录**:Linux 内核在 `/proc` 文件系统中为每个进程提供了详细的运行时信息,如 `cmdline`、`status`、`maps` 等文件可供查阅。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值