如何在Linux系統中統計程序的執行緒數


本文將介紹如何在Linux環境下統計程序的執行緒數。有多種方法可以實現,但我們將學習使用`/proc`和`ps`命令。

使用`/proc`

Proc偽檔案系統位於`/proc`目錄下,這是檢視任務或活動程序執行緒數最簡單的方法。`/proc`目錄以可讀文字檔案形式匯出資訊,提供與現有程序和系統硬體(如中斷、CPU、記憶體、磁碟等)相關的資訊。

# cat /proc/<pid>/status

以上命令是通用語法,它將顯示關於程序``的詳細資訊,包括程序狀態(父程序ID、UID、GID、休眠和執行狀態、使用的檔案數和上下文切換次數)。它還指示程序的匯流排程數。

例如,我們想了解程序ID為2907(在我的Linux環境中是apache程序的程序ID)的程序計數,可以使用以下命令。

# cat /proc/2907/status
Name:    php-fpm
State:   S (sleeping)
Tgid:    2907
Pid:     2907
PPid:    2124
TracerPid:    0
Uid:    48    48    48    48
Gid:    48    48    48    48
Utrace: 0
FDSize: 64
Groups: 48
VmPeak:    445536 kB
VmSize:    382172 kB
VmLck:          0 kB
VmHWM:      84688 kB
VmRSS:      21856 kB
VmData:     17376 kB
VmStk:         88 kB
VmExe:       3396 kB
VmLib:      49280 kB
VmPTE:        548 kB
VmSwap:         0 kB
Threads:        1
SigQ: 0/15205
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000184000004
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: 1
Cpus_allowed_list: 0
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches:    11419
nonvoluntary_ctxt_switches: 25334

在上面的例子中,我們可以看到“Threads: 1”,這意味著apache程序只使用一個執行緒。

我們還可以使用此命令查詢程序中目錄的數量,為此,可以使用以下命令:

# /proc/<pid>/task | wc

這將顯示在程序中建立的每個執行緒,在`/proc//task`中都會建立一個相應的目錄,並以其ID命名。

例如,執行以下命令:

# ls /proc/2907/status | wc
1 1 18

使用`PS`

`ps`命令顯示系統的執行程序,透過向命令新增`H`選項可以列印程序的執行緒數。`h`選項將隱藏輸出頂部的標題。

# ps hH p 14487 | wc -l
1

在上面的例子中,我們可以看到“Threads: 1”,這意味著“apache”程序只使用一個執行緒。

透過本文,我們現在可以找出程序ID或程序使用的程序計數,可以使用任何方法找出Linux環境中執行的程序計數。

更新於:2020年1月21日

697 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.