使用 /proc/stat 获取系统上运行的进程数

使用 /proc/stat 获取系统上运行的进程数

如何找出系统上正在运行的进程的真实数量?许多文章提到使用ps来计算进程数。但最近我查看了它cat /proc/stat,它输出了:

cpu  972 0 1894 189609 236 26 490 0 0 0
cpu0 972 0 1894 189609 236 26 490 0 0 0
intr 101595 157 10 0 0 0 0 0 0 3 0 0 0 136 0 0 0 1406 0 0 14936 934 19133 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 244344
btime 1405754990
processes 3912
procs_running 3
procs_blocked 0
softirq 122778 0 48263 439 15599 19037 0 1 0 7405 32034

它显示进程数为 3912。使用类似的东西ps -A --no-headers | wc -l仅显示 173 个进程。

为什么会/proc/stat多显示这么多进程(增加了3739个进程)?谁给出了正确的数字?

答案1

查看文档proc(5),你会看到这个流程场地:

自启动以来的分叉数。

所以这根本不是您要找的号码。ps正如您已经知道的那样,计算名称中仅包含数字的目录/proc是另一种方法。

答案2

根据您是否要包含线程,将 -L 选项添加到您的ps命令中:

$ ps -A --no-headers | wc -l
359
$ ps -AL --no-headers | wc -l
967

ps 默认情况下不会单独列出线程。线程的要点在于它们是 多线程执行里面一进程地址空间

相关内容