一、通过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个线程