linux 进程中创建线程数,计算Linux上进程中的线程数

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文章中,我们将学习有关这些命令类型的更多信息。继续阅读!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值