man top 查看命令文档
1、统计信息区
第一行:队列信息,同uptime命令的执行结果
19:53:24 当前系统日期
up 15:54 系统运行时间,格式为时:分
5 users 登陆过系统的用户数量
load average: 0.00, 0.00, 0.00 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值
2、第二、三行为进程和CPU的信息
Tasks: 91 total 进程总数
2 running 正在运行的进程数
89 sleeping 休眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s) 0.0%us 用户空间占用CPU百分比
0.4%sy 内核空间占用CPU百分比
0.0%ni 用户进程空间内改变过优先级的进程占用CPU百分比
99.3%id 空闲CPU百分比
0.0%wa 等待输入输出的CPU时间百分比
0.0%hi - 硬中断占用CPU的百分比
0.4%si - 软中断占用CPU的百分比
0.0%st - 是当hypervisor服务器另一个虚拟处理器的时候,虚拟CPU等待实际CPU的时间的百分比。当st值比较高的话,你需要向主机供应商申请扩容虚拟机。服务器上的另一个虚拟机可能拥有更大更多的CPU时间片,你可能需要申请升级以与之竞争。另外高steal值可能意味着主机供应商在服务器上过量地出售虚拟机。如果升级了虚拟机,steal值还不降的话,你应该寻找另一家服务供应商。
3,内存状态
Mem: 498168k total(内存总量), 275796k used(已使用内存量), 222372k free(空闲内存量), 75464k buffers(缓存的内存量)
4,swap交换分区信息
Swap: 524284k total(交换区总量), 0k used(使用的交换区总量), 524284k free(剩余交换区总量), 57964k cached( 缓冲的交换区总量)
5、各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
root@nginx02 ~
# top
top - 19:53:24 up 15:54, 5 users, load average: 0.00, 0.00, 0.00
Tasks: 91 total, 2 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.4%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.4%si, 0.0%st
Mem: 498168k total, 275796k used, 222372k free, 75464k buffers
Swap: 524284k total, 0k used, 524284k free, 57964k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 R 1.3 0.0 1:52.67 events/0
768 root 20 0 0 0 0 S 0.3 0.0 0:06.73 vmmemctl
1 root 20 0 19364 1540 1228 S 0.0 0.3 0:04.76 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.78 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.60 watchdog/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_long/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_power_ef
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
16 root 20 0 0 0 0 S 0.0 0.0 0:00.95 sync_supers
17 root 20 0 0 0 0 S 0.0 0.0 0:01.01 bdi-default
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
19 root 20 0 0 0 0 S 0.0 0.0 0:01.06 kblockd/0
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_hotplug
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata_aux
多U多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:
Cpu0 如果有多个就按照这个排序
top - 20:28:58 up 16:29, 4 users, load average: 0.00, 0.00, 0.00
Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 498168k total, 273352k used, 224816k free, 75464k buffers
Swap: 524284k total, 0k used, 524284k free, 57972k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 S 0.3 0.0 2:05.03 events/0
1 root 20 0 19364 1540 1228 S 0.0 0.3 0:04.80 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.84 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.62 watchdog/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_long/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_power_ef
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
16 root 20 0 0 0 0 S 0.0 0.0 0:01.02 sync_supers
17 root 20 0 0 0 0 S 0.0 0.0 0:01.04 bdi-default
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
19 root 20 0 0 0 0 S 0.0 0.0 0:01.12 kblockd/0
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_hotplug
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata_aux
24 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ata_sff/0
有””并且标注为大写字母的字段是可显示的,没有””并且是小写字母的字段是不显示的。如果要在基本视图中显示“CODE”和“DATA”两个字段,可以通过敲击“r”和“s”键:
监控java线程数:
ps -elf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):
ls /proc/PID/task | wc -l
在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:
pmap PID