如何获取(从终端)线程总数(每个进程和所有进程的总数)

NoS*_*tAl 43 system-info

我试着用谷歌搜索它,但我找不到它。我在寻找:

  1. 进程 X 中的线程数

  2. 当前运行的线程总数

jco*_*ado 67

要获取给定 pid 的线程数:

ps -o nlwp <pid>
Run Code Online (Sandbox Code Playgroud)

获取系统中运行的所有线程的总和:

ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'
Run Code Online (Sandbox Code Playgroud)

  • @Siddharth NLWP 代表轻量级进程数,即线程数。 (3认同)
  • `ps -o nlwp &lt;pid&gt;` 返回 NLWP :),这是什么意思? (2认同)
  • 对于总线程数,这更简单并给出相同的结果`ps -eLf | 厕所-l` (2认同)

小智 9

要查找运行单个进程的线程数,您可以查看/proc/<pid>/status. 它应该将线程数列为字段之一。


Oli*_*Oli 5

我的回答基于ps axms. ps是列出正在运行的内容的好工具。

如果你想通过一个过程来过滤它,你可以尝试这样的事情:

echo $(( `ps axms | grep firefox | wc -l`  - 1))
Run Code Online (Sandbox Code Playgroud)

我们减去 1,因为 grep 将显示在该列表中。

一般来说,对于所有线程,这应该有效:

echo $(( `ps axms | wc -l`  - 1))
Run Code Online (Sandbox Code Playgroud)

这次我们减一,因为有标题行。