如何找出系统上正在运行的进程的真实数量?许多文章提到使用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
答案2
根据您是否要包含线程,将 -L 选项添加到您的ps
命令中:
$ ps -A --no-headers | wc -l
359
$ ps -AL --no-headers | wc -l
967
ps 默认情况下不会单独列出线程。线程的要点在于它们是 多线程执行里面一进程地址空间。