系统监控之top

简介

top可以用来实时显示linux系统的运行情况。

打印输出

top命令输出三个部分:

  1. 统计区 主要由统计任务、CPU、内存、交换区的信息
  2. 字段头 任务的字段头,标明字段的含义
  3. 任务区 每一行打印一个任务信息
## 统计区
top - 22:32:57 up 491 days,  3:21,  3 users,  load average: 0.03, 0.06, 0.01
Tasks: 384 total,   1 running, 383 sleeping,   0 stopped,   0 zombie
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
Mem:  132118792k total, 120647324k used, 11471468k free,  2667992k buffers
Swap: 32767996k total,   919760k used, 31848236k free, 99993460k cached

## 字段头
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                         
## 任务区
19305 KentZhan  20   0  258m  56m 7364 S  3.7  0.0 183:20.17 RtTeServer                  
50069 KentZhan  20   0 20136 1808 1208 R  1.9  0.0   0:00.02 top                              
    1 admin     20   0 24300 1320 1148 S  0.0  0.0   6:05.06 init                             
    2 admin     20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd                         
    3 admin     RT   0     0    0    0 S  0.0  0.0   0:50.61 migration/0                      
    4 admin     20   0     0    0    0 S  0.0  0.0  19:46.27 ksoftirqd/0                      
    5 admin     RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0  

含义说明

统计区

第一行:
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
Tasks: 384 total,   1 running, 383 sleeping,   0 stopped,   0 zombie

一共有384个任务,这个任务应该就是指线程,其中1个在运行中,其他383个都在休眠中,0个stopped状态的进程,0个zombie状态的进程,stopped状态表示被跟踪的进程,比如被gdb attach的进程,zombie表示僵尸进程。

Cpu
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
Mem:  132118792k total, 120647324k used, 11471468k free,  2667992k buffers

总共物理内存:132118792k

已经使用内存:120647324k

空闲的内存:11471468k

buffers内存:2667992k 这个内存其实是包含在已使用的内存中的。

Swap
Swap: 32767996k total,   919760k used, 31848236k free, 99993460k cached

关于交换的区的机制,我还不是很熟悉,后续研究补充。

字段头

 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 启动进程的命令行

任务区

19305 KentZhan  20   0  258m  56m 7364 S  3.7  0.0 183:20.17 RobotTexasServe                  
50069 KentZhan  20   0 20136 1808 1208 R  1.9  0.0   0:00.02 top                              
    1 admin     20   0 24300 1320 1148 S  0.0  0.0   6:05.06 init                             
    2 admin     20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd                         
    3 admin     RT   0     0    0    0 S  0.0  0.0   0:50.61 migration/0                      
    4 admin     20   0     0    0    0 S  0.0  0.0  19:46.27 ksoftirqd/0                      
    5 admin     RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0  
    ## 这里不再解释

其他操作技巧

只监控某个进程

top -p $PID	
[KentZhang@LOCAL-192-168-97-2 ~]$ top -p 19305
top - 23:32:51 up 491 days,  4:21,  3 users,  load average: 0.08, 0.06, 0.01
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3%us,  0.3%sy,  0.0%ni, 99.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  132118792k total, 120680696k used, 11438096k free,  2668112k buffers
Swap: 32767996k total,   919760k used, 31848236k free, 100033744k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                         
19305 KentZhan  20   0  258m  56m 7364 S  2.0  0.0 184:42.73 RtTeServer                 

显示单个Cpu的统计信息

执行top后,按 1

可以清楚的看到每个CPU的使用情况。

[KentZhang@LOCAL-192-168-97-2 ~]$ top 
top - 23:36:20 up 491 days,  4:25,  3 users,  load average: 0.10, 0.09, 0.02
Tasks: 380 total,   1 running, 379 sleeping,   0 stopped,   0 zombie
Cpu0  :  3.3%us,  1.0%sy,  0.0%ni, 95.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  1.0%us,  1.3%sy,  0.0%ni, 97.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.3%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  :  0.7%us,  0.7%sy,  0.0%ni, 98.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.7%us,  1.3%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.7%us,  0.7%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  132118792k total, 120682656k used, 11436136k free,  2668112k buffers
Swap: 32767996k total,   919760k used, 31848236k free, 100034680k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                         
19305 KentZhan  20   0  258m  56m 7364 S  2.3  0.0 184:47.57 RtServer                  
45304 admin     20   0 2954m  56m  12m S  1.0  0.0   4143:26 java 

改变排序方式

在任务区默认是按CPU百分比的大小进行排序的,可以改变排序方式。

使用 “shift + >” 或者 “shift + <” 左右移动字段的排序方式。

显示完整的命令

默认command字段只显示进程的文件名,或者命令行名,不是完整的执行命令。

top -c  ## 显示完整的命令	
[KentZhang@LOCAL-192-168-97-2 ~]$ top -c
top - 23:43:46 up 491 days,  4:32,  3 users,  load average: 0.12, 0.08, 0.01
Tasks: 381 total,   2 running, 379 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.9%us,  1.3%sy,  0.0%ni, 93.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  132118792k total, 120684588k used, 11434204k free,  2668112k buffers
Swap: 32767996k total,   919760k used, 31848236k free, 100034984k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                         
64228 admin     20   0  662m  20m 4300 S 40.7  0.0 149:47.29 /usr/local/python2714/bin/python 
19477 WwwCron   20   0  232m  13m 8144 S  1.7  0.0   0:00.09 /usr/local/php/bin/php /data/wwwr
19504 admin     20   0  158m 3452 2716 R  1.0  0.0   0:00.03 sudo /data/zabbix/bin/PartitionWr
18027 KentZhan  20   0 20284 2092 1324 R  0.7  0.0   0:01.31 top -c    

切换内存展示的单位

按 e 键,可以切换单位,从 kb 到 mb,gb,tb等等

Tasks: 1135 total,   1 running, 1134 sleeping,   0 stopped,   0 zombie
%Cpu(s): 23.4 us,  4.7 sy,  0.0 ni, 69.4 id,  0.0 wa,  0.0 hi,  2.5 si,  0.0 st
KiB Mem : 65791988 total,  1209256 free, 27257884 used, 37324848 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 32357320 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                             
 26183 root      20   0 1783.2m 927.7m   4.6m S 282.8  1.4  13448:00 PushProxy                                                           
 45190 root      20   0 1779.1m  53.8m   6.4m S 108.2  0.1  49907:32 binanceParser                                                       
 45579 root      20   0  399.9m 171.8m   6.9m S  88.8  0.3   3098:39 stock-pick                                                           
 76395 root      20   0  624.2m  51.4m   6.5m S  52.2  0.1 138:56.87 monitor-core-wr                                                     
 70721 root      20   0  624.1m  57.5m   6.4m S  38.8  0.1 121:43.43 monitor-core-wr                                                     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值