天天看点

查看应用/系统线程数

一、通过top命令查看

top命令实时显示进程状态,默认每5秒更新一次。top命令显示的每一列的含义为:

列名 含义
PID 进程ID
USER 进程拥有者
PRI 进程优先级
SIZE 进程拥有的内存
RSS 进程拥有的物理内存
SHARE 进程和其它进程共享的物理内存空间
STAT 进程的状态,S=sleeping;R=running;T=stopped or traced; D=interrupttible;Z=zombie
%CPU 进程的CPU使用率
%MEM 进程的物理内存使用率
TIME 进程占用总CPU时间
COMMAND 开启进程的命令

top交互界面常用参数:

参数 用途
? 交互界面可用指令
l 是否显示负载信息,top
t 是否显示总的统计数据,Tasks,Cpu(s)
m 是否显示内存的信息 mem,swap
f 动态配置页,可选择需要展示的信息列
o 动态配置页,更新展示列排列顺序,相关字母大写表示排序+1,小写表示排序-1
H 展示线程信息
R 按CPU降序/升序排列
c 展示进程开启的具体命令行
u 展示具体用户的进程
q 退出

top常用命令行:

命令行 含义
top -p pid 显示某进程信息
top -p pid1,pid2,pidn 显示多个进程信息
top -u username 展示某个的进程
top -H 显示线程信息
top -H -p pid 显示指定进程的线程信息
top -d ntime 设置更新时间,单位秒

通过top命令查看线程数:

# 查看应用所在进程的线程数
top -H -p pid

# 查看总的线程数
top -H

# 范例
ps aux | grep java
top -H -p 1840

--- 
top - 16:12:32 up 51 days,  6:15,  1 user,  load average: 0.52, 0.44, 0.47
Tasks: 312 total,   0 running, 312 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 42.3%id,  0.0%wa,  0.0%hi,  0.0%si, 57.1%st
Mem:   8388608k total,  6306840k used,  2081768k free,        0k buffersSwap:        0k total,        0k used,        0k free,  2891724k cached
           

1840的应用进程中有312个线程

二、通过pstree命令查看

pstree命令以树状图的方式显示进程间的关系,ps可以展示当前可以正字运行的进程信息,但不能展示进程间的关系。

pstree常用命令行:

命令行 含义
pstree 以树状图显示进程,只显示进程名字,相同进程合并显示
pstree pid 以树状图显示进程ID为PID的进程及子进程
pstree -p 以树状图显示进程,同时显示进程PID
pstree -p pid 以树状图显示进程ID为PID的进程及子进程,同时显示进程PID
pstree -a 以树状图心事进程,同名进程不合并,显示命令行参数

通过pstree查看应用线程数:

ps aux | grep java
$pstree 1840
---
java───312*[{java}]

$pstree -p 1840 | wc -l
---
312
           

1840的应用进程中有312个线程

三、通过/proc虚拟文件系统查看

/proc是linux系统下的一个重要目录,它与/etc、/home等系统目录不同,它不是一个真正的文件系统,它是一个虚拟的文件系统,它不存在与磁盘而是存在与内存中,/proc以文件系统的方式为访问系统内核的操作提供接口,比如内存、CPU、进程信息等都可以通过/proc下的对应文件获取,而/proc是动态从系统内核中读取信息的。

/proc中的主要文件及目录:

文件/目录 含义
/proc/pid 以进程PID命名的目录,每个目录表示一个进程
/proc/cpuinfo CPU信息
/proc/meminfo 物理内存信息
/proc/version 内核版本
/proc/cmdline 系统启动命令
/proc/uptime 系统启动后的运行时间
/proc/sys/kernel/hostname 主机名
/proc/sys/kernel/domainname 域名
/proc/loadavg 系统负载信息

/proc/pid下的主要文件及目录:

文件/目录 含义
/proc/pid/cmdline 进程启动命令
/proc/pid/environ 进程环境变量列表
/proc/pid/mem 进程在内存中的内容
/proc/pid/stat 进程的状态信息
/proc/pid/statm 进程的内存使用信息
/proc/pid/status 进程的状态信息
/proc/pid/task 进程的子进程

通过/proc虚拟文件系统查看应用线程数:

$cat /proc/1840/status | grep Threads
---
Threads:  312

$ls /proc/1840/task/ | wc -l
---
312
           

1840的应用进程中有312个线程

参考

  • https://blog.csdn.net/wisgood/article/details/80630014
  • https://www.cnblogs.com/zk47/p/4261288.html
  • https://www.cnblogs.com/0616--ataozhijia/p/4015465.html
  • https://blog.csdn.net/oyhb_1992/article/details/77715346
  • https://blog.51cto.com/qibingtuan/2134742

继续阅读