前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux18.2_top命令详解

Linux18.2_top命令详解

作者头像
Y大宽
发布2019-05-30 14:44:25
9170
发布2019-05-30 14:44:25
举报
文章被收录于专栏:Y大宽Y大宽

关于ps命令的用法,见Linux_18下查看进程的启动和运行时间。虽然ps在收集系统上的进程信息很有用,但也有不足之处:它只能显示某个特定时间点的饿信息,如果想观察频繁换进换出的内存的运行趋势,ps就有点力不从心了。

top命令和ps相似,可以实时显示进程信息。

代码语言:javascript
复制
top - 18:56:37 up 23:03,  1 user,  load average: 296.20, 296.00, 302.87
Tasks: 764 total,   1 running, 590 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14.1 us,  1.5 sy,  0.0 ni,  0.0 id, 83.2 wa,  0.0 hi,  1.1 si,  0.0 st
KiB Mem : 65885076 total,   402748 free, 65326388 used,   155940 buff/cache
KiB Swap:  2097148 total,      340 free,  2096808 used.    13324 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                 
 27687 pc        20   0 3240472 215596      0 S   3.3  0.3   7:14.96 java                                                                                    
 30658 pc        20   0 3173908 222532      0 S   3.3  0.3   8:13.48 java                                                                                    
 31401 pc        20   0 3240472 213156      0 S   3.3  0.3   7:34.65 java                                                                                    
 32428 pc        20   0 3307036 214048      0 S   3.3  0.3   9:56.77 java                                                                                    
 24691 pc        20   0 3373600 211868      0 S   2.8  0.3  10:11.30 java                                                                                    
 25199 pc        20   0 3373600 211508      0 S   2.8  0.3   5:15.19 java                                                                                    
 27693 pc        20   0 3240472 215908      0 S   2.8  0.3   7:06.08 java                                                                                    
 28596 pc        20   0 3173908 222992      0 S   2.8  0.3   8:51.75 java                                                                                    
 28842 pc        20   0 3307036 221788      0 S   2.8  0.3   7:00.92 java                                                                                    
 29396 pc        20   0 3307036 220716      0 S   2.8  0.3  10:03.62 java                                                                                    
 29761 pc        20   0 3307036 215060      0 S   2.8  0.3   5:42.24 java                                                                                    
 29773 pc        20   0 3307036 213004      0 S   2.8  0.3   4:55.32 java                                                                                    
 30576 pc        20   0 3173908 224252      0 S   2.8  0.3   7:07.25 java                                                                                    
 30824 pc        20   0 3173908 224200      0 S   2.8  0.3   8:20.90 java                                                                                    
 30933 pc        20   0 3240472 214660      0 S   2.8  0.3   6:35.04 java                                                                                    
 31062 pc        20   0 3307036 214744      0 S   2.8  0.3   8:29.36 java                                                                                    
 31120 pc        20   0 3307036 223212      0 S   2.8  0.3   9:35.15 java  

解释如下:

第一部分 显示系统概况

第一行 系统的负载程度

依次为:当前时间,系统的运行时间,登录的用户数,系统的平均负载,具体到本例

18:56:37:当前系统时间 up 23:03:系统已经运行的时间 1 user:当前有1个用户登录系统 load average: 296.20, 296.00, 302.87:最近1,5,15min的平均负载情况

其中平均负载有3个值:最近1分钟的,最近5分钟的,最近15分钟的平均负载。值越大说明系统的负载越高。因为进程可能会有短期的突发性活动,一分钟高负载也正常,但如果近15分钟都很高,可能系统有问题。

如何定义高负载?

  • 究竟什么程度才是高负载?这个值取决于系统的硬件配置以及系统上通常运行的程序。对于某个系统来说是高负载而对另外一个系统可能正常。
  • 通常,负载值超过2,就说明系统比较繁忙了

第二行 进程概要信息

top输出中,将进程叫任务(task),依次为:

总任务数,运行,休眠,停止,僵化(的任务)

Tasks: 763 total, 1 running, 590 sleeping, 0 stopped, 0 zombie 总共763个任务,1个正在运行,590个在休眠,0个停止,0个僵尸 僵化是进程完成了,但父进程没有响应。

第三行 CPU概要

依次为

**用户,系统,运行,空闲,等待

%Cpu(s): 14.1 us, 1.5 sy, 0.0 ni, 0.0 id, 83.2 wa, 0.0 hi, 1.1 si, 0.0 st 14.1 us:用户空间占用CPU的百分比。 1.5 sy:内核空间占用CPU的百分比。 0.0 ni:改变过优先级的进程占用CPU的百分比 0.0 id:空闲CPU百分比 83.2 wa:IO等待占用CPU的百分比 0.0 hi: 硬中断(Hardware IRQ)占用CPU的百分比 1.1 si:软中断(Software Interrupts)占用CPU的百分比

第四行 内存状态

总共有多少内存,空闲多少,当前用了多少,缓存的内存量

65885076 total :物理内存总量(64GB) 406368 free:空闲的内存(40M) 65322228 used使用中的内存 156480 buff/cache缓存的内存

第五行 swap交换分区信息,和第四行解释一致

备注:

  • 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
  • 如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。
  • 对于内存监控,在top里要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第二部分

显示当前运行中的进程的详细列表,有些列和ps命名的输出类似分别解释如下

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 — 进程名称(命令名/命令行)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一部分 显示系统概况
    • 第一行 系统的负载程度
      • 第二行 进程概要信息
        • 第三行 CPU概要
          • 第四行 内存状态
            • 第五行 swap交换分区信息,和第四行解释一致
            • 第二部分
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档