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

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

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

  1. 进程 X 中的线程数

  2. 当前正在运行的线程总数

答案1

获取给定 pid 的线程数:

ps -o nlwp <pid>

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

ps -eo nlwp | tail -n +2 | awk '{ num_threads += $1 } END { print num_threads }'

答案2

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

答案3

我根据这个答案做出判断ps axmsps这是一个列出正在运行的内容的绝佳工具。

如果您想通过流程进行过滤,您可以尝试如下操作:

echo $(( `ps axms | grep firefox | wc -l`  - 1))

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

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

echo $(( `ps axms | wc -l`  - 1))

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

答案4

要获取某个进程的线程总数(进程中同时运行的小部分),您可以使用该命令。ps -o nlwp <pid>它始终有效。但是,如果您更喜欢尝试通过文件查看它。您可能应该查看为系统的每个进程创建的文件。在那里,您可以获得进程的最终详细信息。对于每个进程,都有一个在其中创建的文件夹,/proc/<pid>您还可以查看所有其他详细信息。

相关内容