通过pstree命令(根据pid)进行查询:
ps -ef|grep java //查找进程pid(比如这里查找java(tomcat)进程的pid)
pstree -p 19135
pstree -p 19135|wc -l
top -Hp 19135 //下面结果中的Tasks 对应的47即是线程的个数
top - 14:05:55 up 391 days, 20:59, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 47 total, 0 running, 47 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8058056k total, 7718656k used, 339400k free, 354216k buffers
Swap: 0k total, 0k used, 0k free, 4678160k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19135 root 20 0 5339m 632m 5476 S 0.0 8.0 0:00.00 java
19136 root 20 0 5339m 632m 5476 S 0.0 8.0 0:00.84 java
…
通过查看/proc/pid/status
proc伪文件系统,它驻留在/proc目录,这是最简单的方法来查看任何活动进程的线程数。/proc目录以可读文本文件形式输出,提供现有进程和系统硬件
相关的信息如CPU、中断、内存、磁盘等等。
[root@xqsj_web2 ~]# cat /proc/19135/status
Name: java
State: S (sleeping)
Tgid: 19135
Pid: 19135
PPid: 1
TracerPid: 0
…
Threads: 47 //这里显示的是进程创建的总线程数。输出表明该进程有47个线程。
SigQ: 1/62793
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
…
voluntary_ctxt_switches: 1
nonvoluntary_ctxt_switches: 1
或者,也可以在/proc//task中简单的统计子目录的数量,如下所示:
[root@xqsj_web2 ~]# ll /proc/19135/task
总用量 0
dr-xr-xr-x 6 root root 0 6月 14 17:57 11553
…
[root@xqsj_web2 ~]# ll /proc/19135/task|wc -l
48