原文链接:系统监控之top
发布时间:2018-12-02 23:49:23
文章目录
- 简介
- 打印输出
- 含义说明
- 统计区
- 第一行:
- Tasks
- Cpu
- Mem
- Swap
- 字段头
- 任务区
- 其他操作技巧
- 只监控某个进程
- 显示单个Cpu的统计信息
- 改变排序方式
- 显示完整的命令
- 切换内存展示的单位
简介
top可以用来实时显示linux系统的运行情况。
打印输出
top命令输出三个部分:
- 统计区 主要由统计任务、CPU、内存、交换区的信息
- 字段头 任务的字段头,标明字段的含义
- 任务区 每一行打印一个任务信息
统计区
1 | top - 22:32:57 up 491 days, 3:21, 3 users, load average: 0.03, 0.06, 0.01 |
字段头
1 | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND |
任务区
1 | 19305 KentZhan 20 0 258m 56m 7364 S 3.7 0.0 183:20.17 RtTeServer |
含义说明
统计区
第一行:
1 | top - 22:32:57 up 491 days, 3:21, 3 users, load average: 0.03, 0.06, 0.01 |
当前系统时间是22:32:57,系统已经运行了491天3小时21分,目前有3个用户登录系统,最后的load average表示平均负载率,其后面的3个数字,分别代表1,5,15分钟统计的平均负载率。
关于负载率,就是一定时间内任务使用CPU的百分比,例如计算1分钟任务负载率:
load average = 所有任务使用CPU的时间/(1分钟*CPU个数)
Tasks
1 | Tasks: 384 total, 1 running, 383 sleeping, 0 stopped, 0 zombie |
一共有384个任务,这个任务应该就是指线程,其中1个在运行中,其他383个都在休眠中,0个stopped状态的进程,0个zombie状态的进程,stopped状态表示被跟踪的进程,比如被gdb attach的进程,zombie表示僵尸进程。
Cpu
1 | Cpu(s): 1.2%us, 0.7%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st |
us 表示用户空间中占用CPU百分比
sy 表示内核空间中占用CPU百分比
id 表示CPU空闲状态的时间百分比
wa 表示IO等待占用时间百分比
其他的几个,暂时没用到,待补充。
Mem
1 | Mem: 132118792k total, 120647324k used, 11471468k free, 2667992k buffers |
总共物理内存:132118792k
已经使用内存:120647324k
空闲的内存:11471468k
buffers内存:2667992k 这个内存其实是包含在已使用的内存中的。
Swap
1 | Swap: 32767996k total, 919760k used, 31848236k free, 99993460k cached |
关于交换的区的机制,我还不是很熟悉,后续研究补充。
字段头
1 | PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND |
PID 进程ID
user 执行进程的用户
PR 优先级
NI nice值,和优先级相关
VIRT 进程使用的虚拟内存大小
RES 进程使用的、未被换出的物理内存大小
SHR 共享内存大小
S 进程状态,有R、S、T、D、Z
%CPU CPU占用率
%MEM 内存占有率
TIME+ 进程一共使用CPU时间的大小
COMMAND 启动进程的命令行
任务区
1 | 19305 KentZhan 20 0 258m 56m 7364 S 3.7 0.0 183:20.17 RobotTexasServe |
其他操作技巧
只监控某个进程
1 | top -p $PID |
1 | [KentZhang@LOCAL-192-168-97-2 ~]$ top -p 19305 |
显示单个Cpu的统计信息
执行top后,按 1
可以清楚的看到每个CPU的使用情况。
1 | [KentZhang@LOCAL-192-168-97-2 ~]$ top |
改变排序方式
在任务区默认是按CPU百分比的大小进行排序的,可以改变排序方式。
使用 “shift + >” 或者 “shift + <” 左右移动字段的排序方式。
显示完整的命令
默认command字段只显示进程的文件名,或者命令行名,不是完整的执行命令。
1 | top -c ## 显示完整的命令 |
1 | [KentZhang@LOCAL-192-168-97-2 ~]$ top -c |
切换内存展示的单位
按 e 键,可以切换单位,从 kb 到 mb,gb,tb等等
1 | Tasks: 1135 total, 1 running, 1134 sleeping, 0 stopped, 0 zombie |