Linux常用命令:top

常用

  • top 进程模式
  • top –H 线程模式

输出

第一行

** top - 23:57:58 up 9 days, 2:12, 4 users, load average: 0.38, 0.47, 0.43 **

  • 第一行描述的是系统负载的整体情况
    • load average(系统负载),用Linux内核的任务队列的平均长度表示。0.38, 0.47, 0.43这三个数值分别是系统1分钟前,5分钟前、15分钟前到现在的平均值。当load average的数值/CPU逻辑核心数==1.0时,表示系统满载运行。超过1.0时,表示系统已经超载运行,不堪重负。
    • 下面一段话引用自man page:

System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk.

第二行

** Tasks: 205 total, 2 running, 203 sleeping, 0 stopped, 0 zombie **

  • 第二行描述了系统进程/线程的基本情况。当使用top是,task表示进程;当使用top –H时,task表示线程。
  • running – 状态为TASK_RUNNING的task数量。
  • sleeping – 状态为TASK_INTERRUPTIBLE或TASK_UNINTERRUPTIBLE的task数量。
  • stopped – 状态为__TASK_STOPPED的task数量,正常的系统这种进程状态应该很少。在收到一些“致命”的signal时,task会进入这种状态。
  • zombie – 状态为EXIT_ZOMBIE的task。在Linux中,一个task退出后,会进入EXIST_ZOMBIE,需要由父task调用wait系列的函数对其进行回收。如果系统出现大量zombie的task,则很有可能是父task没有对子task调用wait进行回收或者产生太多task,父task还来不及回收。(如果父task在子task之前退出了,则由init task回收zombie task)。

第三行

** %Cpu(s): 4.3 us, 1.2 sy, 0.0 ni, 94.4 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st **

  • %Cpu(s)描述了多核CPU使用情况。在top命令的交互界面输入左上角的1可以看到不同CPU核的使用情况。
  • us, user: time running un-niced user processes
  • sy, system: time running kernel processes
  • ni, nice: time running niced user processes
  • id, idle: time spent in the kernel idel handler
  • wa, IO-wait: time waiting for I/O completion
  • hi: time spent servicing hardware interrupts
  • si: time spent servicing software interrupts
  • st: time stolen from this vm by the hypervisor

第四行

** KiB Mem: 3856200 total, 3201784 used, 654416 free, 221532 buffers **

  • 第四行Mem是从OS的角度描述物理内存的使用情况。具体见Linux命令:free

第五行

** KiB Swap: 3999740 total, 485604 used, 3514136 free. 1374532 cached Mem **

  • 第五行Swap显示了虚拟内存的使用情况。
  • Cached Mem – 缓冲的交换区总量。内存中的内容被交换到Swap,而后又被换入到内存。内存中和Swap中的内容都未被修改,则相应的内存再次被换出时可不必再对Swap写入。

第六行

** PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND **

  • 这一行是下面描述各个进程/线程的情况的标题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

基于Spring的Web缓存 转

原文:https://www.cnblogs.com/moongeek/p/7689683.html

9320
来自专栏coolblog.xyz技术专栏

MyBatis 源码分析 - 插件机制

一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,对框架进行拓展...

13730
来自专栏Web项目聚集地

MyBatis框架教程「工具类的使用」

上篇文章我们熟悉运用MyBatis进行增删改查,并且手写了一个mybatis的工具类,学习了一些关于单元测试和关于日志的配置,没有看的读者请移步:MyBatis...

31520
来自专栏编程心路

SSH框架之旅-hibernate(2)

下面展示了两种方式来删除一条记录,但建议使用第一种,先查询后删除的方式,应该避免第二种直接设置主键对应属性值的方式。

14230
来自专栏向治洪

JSBridge深度剖析

概述 做过混合开发的人都知道Ionic和PhoneGap之类的框架,这些框架在web基础上包装一层Native,然后通过Bridge技术的js调用本地的库。 在...

40450
来自专栏岑玉海

hbase源码系列(六)HMaster启动过程

  这一章是server端开始的第一章,有兴趣的朋友先去看一下hbase的架构图,我专门从网上弄下来的。   按照HMaster的run方法的注释,我们可以了解...

61290
来自专栏分布式系统进阶

Influxdb 数据写入流程

因此对写入请求的处理就在函数 func (h *Handler) serveWrite(w http.ResponseWriter, r *http.Reque...

21230
来自专栏信安之路

HCTF2017的三个WriteUp

解决方法就是先 undefine 掉函数,再右键选择 Code,最后 Create function 就可以正常反编译了。

12300
来自专栏Java帮帮-微信公众号-技术文章全总结

Activiti学习详解【面试+工作】

一:Activiti第一天 1:工作流的概念 ? 说明: 1) 假设:这两张图就是XX兄弟的请假流程图 2) 图的组成部分: A. 人物:范XX 冯X刚 王X军...

76950
来自专栏Star先生的专栏

从源码中分析 Hadoop 的 RPC 机制

RPC是Remote Procedure Call(远程过程调用)的简称,这一机制都要面对两个问题:对象调用方式余与序列/反序列化机制。本文给大家介绍从源码中分...

77500

扫码关注云+社区

领取腾讯云代金券