Linux

使用 /proc/stat 獲取系統上執行的程序數

  • January 3, 2022

如何找出系統上正在執行的程序的真實數量?許多文章提到使用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 個程序)?誰給出了正確的號碼?

查看 的文件proc(5),您會在processes欄位中看到:

自引導以來的分叉數。

所以這根本不是你要找的號碼。ps正如您已經知道的那樣,將告訴您,計算名稱中只有數字的目錄/proc是另一種方法。

根據您是否要包含執行緒,將 -L 選項添加到您的ps命令中:

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

ps預設不單獨列出執行緒。執行緒的意義在於它們是 一個程序地址空間內的****多個執行執行緒

引用自:https://unix.stackexchange.com/questions/145427