如何在Linux上计算进程中的线程数

在本文中,我们将知道如何计算Linux环境中进程中的线程数,有几种方法可以做到,但是我们将学习使用'/ proc'和'ps'命令。

使用'/ proc'

在Proc伪文件系统中,该文件位于/ proc目录中,这是查看任务或活动进程的线程数的最简单方法。“ proc”目录以可读文本文件的形式导出,以提供与现有进程和系统硬件(例如中断,CPU,内存,磁盘等)有关的信息。

# cat /proc/<pid>/status

上面的命令是常规语法,它将显示有关带有<pid>的进程的详细信息,其中包括进程状态(父PID,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 / <pid> / task中创建一个相应的目录,并以其ID命名。

例如,运行以下命令

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

使用“ PS”

通过在命令中添加“ H”选项,“ ps”命令将显示系统正在运行的进程,该选项可以打印进程的线程数。'h'选项将在输出的顶部隐藏标题。

# ps hH p 14487 | wc -l
1

在上面的示例中,我们可以看到Threads:1,表示“ apache”进程仅使用一个线程

从本文开始,我们现在可以找出用于进程ID或进程的进程数,我们可以使用任何方法找出在Linux环境上运行的进程数。