天天看点

Linux 有问必答:如何在 Linux 中统计一个进程的线程数

问题: 我正在运行一个程序,它在运行时会派生出多个线程。我想知道程序在运行时会有多少线程。在 linux 中检查进程的线程数最简单的方法是什么?

如果你想看到 linux 中每个进程的线程数,有以下几种方法可以做到这一点。

<a target="_blank"></a>

proc 伪文件系统,它驻留在 /proc 目录,这是最简单的方法来查看任何活动进程的线程数。 /proc 目录以可读文本文件形式输出,提供现有进程和系统硬件相关的信息如 cpu、中断、内存、磁盘等等.

<code>$ cat /proc/&lt;pid&gt;/status</code>

上面的命令将显示进程 &lt;pid&gt; 的详细信息,包括过程状态(例如, sleeping, running),父进程 pid,uid,gid,使用的文件描述符的数量,以及上下文切换的数量。输出也包括进程创建的总线程数如下所示。

<code>threads: &lt;n&gt;</code>

例如,检查 pid 20571进程的线程数:

<code>$ cat /proc/20571/status</code>

Linux 有问必答:如何在 Linux 中统计一个进程的线程数

输出表明该进程有28个线程。

或者,你可以在 /proc//task 中简单的统计子目录的数量,如下所示。

<code>$ ls /proc/&lt;pid&gt;/task | wc</code>

这是因为,对于一个进程中创建的每个线程,在 <code>/proc/&lt;pid&gt;/task</code> 中会创建一个相应的目录,命名为其线程 id。由此在 <code>/proc/&lt;pid&gt;/task</code> 中目录的总数表示在进程中线程的数目。

如果你是功能强大的 ps 命令的忠实用户,这个命令也可以告诉你一个进程(用“h”选项)的线程数。下面的命令将输出进程的线程数。“h”选项需要放在前面。

<code>$ ps hh p &lt;pid&gt; | wc -l</code>

本文来自云栖社区合作伙伴“linux中国”,原文发布日期:2015-09-17

继续阅读