Linux进程可以可视化为程序的运行实例,其中Linux中的每个线程不过是进程的执行流。您知道如何在Linux环境中查看每个进程的线程数吗?有几种计数线程数的方法。本文讨论如何读取有关Linux上进程的信息以及如何计算每个进程的线程数。
阅读过程信息
要读取过程信息,请使用“ ps”命令。此命令用于读取Linux上当前进程的快照。但是,ps -e或ps aux命令显示所有进程的名称。
要读取过程信息,请使用以下命令–$ ps
样本输出应如下所示–PID TTY TIME CMD
5843 pts/0 00:00:00 bash
5856 pts/0 00:00:00 ps
要显示所有进程名称,请使用以下命令–$ ps -e
样本输出应如下所示–PID TTY TIME CMD
1 ? 00:00:01 init
2 ? 00:00:00 kthreadd
3 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 kworker/0:0H
7 ? 00:00:07 rcu_sched
8 ? 00:00:00 rcu_bh
9 ? 00:00:02 rcuos/0
10 ? 00:00:00 rcuob/0
11 ? 00:00:00 migration/0
12 ? 00:00:00 watchdog/0
13 ? 00:00:00 watchdog/1
14 ? 00:00:00 migration/1
15 ? 00:00:00 ksoftirqd/1
17 ? 00:00:00 kworker/1:0H
18 ? 00:00:01 rcuos/1
19 ? 00:00:00 rcuob/1
20 ? 00:00:00 watchdog/2
21 ? 00:00:00 migration/2
22 ? 00:00:00 ksoftirqd/2
24 ? 00:00:00 kworker/2:0H
25 ? 00:00:04 rcuos/2
26 ? 00:00:00 rcuob/2
27 ? 00:00:00 watchdog/3
28 ? 00:00:00 migration/3
29 ? 00:00:00 ksoftirqd/3
31 ? 00:00:00 kworker/3:0H
32 ? 00:00:01 rcuos/3
33 ? 00:00:00 rcuob/3
34 ? 00:00:00 khelper
35 ? 00:00:00 kdevtmpfs
36 ? 00:00:00 netns
37 ? 00:00:00 perf
38 ? 00:00:00 khungtaskd
39 ? 00:00:00 writeback
40 ? 00:00:00 ksmd
41 ? 00:00:00 khugepaged
42 ? 00:00:00 crypto
43 ? 00:00:00 kintegrityd
44 ? 00:00:00 bioset
45 ? 00:00:00 kblockd
46 ? 00:00:00 ata_sff
............
每个进程计数线程
有几种方法可以计算每个进程的线程数。它们显示如下-
方法1 – / proc
这是查看Linux机器上任何活动进程的线程数的最简单方法。proc命令导出进程和系统硬件信息的文本文件,例如CPU,中断,内存,磁盘等。
要查看进程的线程数,请使用以下命令-$ cat /proc//status
例如,这里我们将PID添加为1041。然后,命令应如下所示–$ cat /proc/1041/status
样本输出应如下所示:Name: cups-browsed
State: S (sleeping)
Tgid: 1041
Ngid: 0
Pid: 1041
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups: 0
VmPeak: 75364 kB
VmSize: 75364 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 5932 kB
VmRSS: 5932 kB
VmData: 568 kB
VmStk: 136 kB
VmExe: 48 kB
VmLib: 8712 kB
VmPTE: 164 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/31329
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001000
SigCgt: 0000000180004a02
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
Seccomp: 0
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 134
nonvoluntary_ctxt_switches: 1
上面的示例每个进程有一个线程。另一种方法是计算/ proc / / task中找到的目录数。
因为,在进程中创建的每个线程,都会在/ proc / / task中创建一个各自的目录,并以其线程ID命名。因此,/ proc / /任务中的目录总数表示进程中的线程数。
要验证它,请使用以下命令–$ ls /proc//task | wc
在上述命令中,我们将PID设置为1041,然后,该命令应如下所示–$ ls /proc/1041/task | wc
样本输出应如下所示:tp@linux:~$ ls /proc/1041/task |wc
1 1 5
上面的输出描述了大约1041进程,并且其中有一个目录。
方法2 – ps
该PS命令显示与“各个线程H”的选择。以下命令显示进程的线程数。$ ps hH p 1041 | wc -l
输出应该像这样-tp@linux:~$ ps hH p 1041 | wc -l
1
tp@linux:~$
恭喜你!现在,您知道“如何在Linux上计算进程中的线程数”。在下一篇Linux文章中,我们将学习有关这些命令类型的更多信息。继续阅读!