了解你服务器的心情——top命令详解

top是Linux较为常用的命令,可以监控服务器的CPU、内存、进程的运行情况,话不多说,直接操作。

输入top即可启动:

下面我们就来逐一介绍top向我们展示的内容。

第一行:系统概况

top - 19:39:14 up 20 days,  7:48,  1 user,  load average: 0.00, 0.01, 0.05
  • 19:39:14 up 20 days:系统运行时间
  • 1 user:用户数
  • load average: 0.00, 0.01, 0.05:1分钟、5分钟、15分钟的平均负载

第二行:进程概况

Tasks:  69 total,   2 running,  67 sleeping,   0 stopped,   0 zombie
  • 69 total:总进程数
  • 2 running:运行态进程数
  • 67 sleeping:睡眠态进程数
  • 0 stopped:停止态进程数
  • 0 zombie:僵尸态进程数

第三行:CPU概况

%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
  • us:用户进程CPU使用占比
  • sy:系统进程CPU使用占比
  • ni:用户进程中改变了优先级的进程CPU使用占比
  • id:空闲CPU占比
  • wa:等待IO的CPU时间占比
  • hi:硬中断占用CPU百分比
  • si:软终端占用CPU百分比

默认情况下显示的是所有CPU的平均值,如果想看每个CPU具体值,则按下『1』即可:

%Cpu0  :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :  0.3 us,  0.3 sy,  0.0 ni, 99.0 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st

第四五行:内存概况

在Linux中,内存一共分为两块:物理内存 和 交换区。 物理内存是真正的内存,而内存资源毕竟有限,因此当物理内存不够的时候,根据LRU置换算法,那些很长时间没被使用的数据将会被存入交换区。交换区其实是硬盘,并非内存。当交换区存在数据时说明物理内存不够了。

KiB Mem :  1883724 total,   300584 free,   646088 used,   937052 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1062956 avail Mem
  • Mem 1883724 total:物理内存的总量
  • Mem 300584 free:物理内存的空闲量
  • Mem 646088 used:物理内存使用量
  • Mem 937052 buff/cache:物理内存内核缓存使用量
  • Swap 0 total:交换区总量
  • Swap 0 free:交换区空闲量
  • Swap 0 used:交换区使用量
  • Swap 1062956 avail Mem:虚拟内存总量

PS:buff/cache虽然占用物理内存,但当内存不够时也可以直接使用,因此物理内存的可使用空间为:free + buff/cache。

第六行:进程详情

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
1784 root      20   0 2072440  73204   8768 S  0.7  3.9 108:58.75 java
1182 root      20   0   46540   2624   1988 S  0.3  0.1  11:06.20 AliYunDunUpdate
  • PID:进程ID
  • USER:进程所有者
  • RES:进程所占物理内存大小(kb)
  • SHR:进程所占共享内存大小(kb)
  • VIRT:进程所占虚拟内存大小???
  • %CPU:CPU占用百分比
  • %MEM:物理内存占用百分比
  • PR:进程优先级
  • NI:nice值
  • TIME+:上次更新到现在进程使用的CPU时间总计
  • COMMAND:启动该进程的命令

小技巧

1. 间隔刷新

进入top后按下d,即可设置间隔刷新时间,默认是3秒。

2. 添加进程监控字段

进入top后按下f,即可添加/减少需要监控的进程信息。

* PID     = Process Id             vMn     = Minor Faults delta
* USER    = Effective User Name    USED    = Res+Swap Size (KiB)
* PR      = Priority               nsIPC   = IPC namespace Inode
* NI      = Nice Value             nsMNT   = MNT namespace Inode
* VIRT    = Virtual Image (KiB)    nsNET   = NET namespace Inode
* RES     = Resident Size (KiB)    nsPID   = PID namespace Inode
* SHR     = Shared Memory (KiB)    nsUSER  = USER namespace Inode
* S       = Process Status         nsUTS   = UTS namespace Inode
* %CPU    = CPU Usage
* %MEM    = Memory Usage (RES)
* TIME+   = CPU Time, hundredths
* COMMAND = Command Name/Line
  PPID    = Parent Process pid
  UID     = Effective User Id
  RUID    = Real User Id
  RUSER   = Real User Name
  SUID    = Saved User Id
  SUSER   = Saved User Name
  GID     = Group Id
  GROUP   = Group Name
  PGRP    = Process Group Id

前面有*的说明已经显示了。

3. 保存设置

对top进行设置后,默认是不保存配置的,只有按了大写的W后才会保存。

4. 监控结果输出到文件

top -d 1 -n 3 > top.log

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏刘望舒

Android系统启动流程(四)Launcher启动过程与系统启动流程

前言 此前的文章我们学习了init进程、Zygote进程和SyetemServer进程的启动过程,这一篇文章我们就来学习Android系统启动流程的最后一步:L...

2128
来自专栏一个爱瞎折腾的程序猿

asp.net core使用Swashbuckle.AspNetCore(swagger)生成接口文档

开局一张图,然后开始编,一些基本的asp.net core东西就不再赘述,本文只对Swashbuckle.AspNetCore的几个使用要点进行描述。

1101
来自专栏james大数据架构

资源等待类型sys.dm_os_wait_stats

动态管理视图  sys.dm_os_wait_stats  返回执行的线程所遇到的所有等待的相关信息。可以使用该聚合视图来诊断 SQL Server 以及特定查...

2047
来自专栏linux驱动个人学习

Linux进程优先级的处理--Linux进程的管理与调度(二十二)

从0~99的范围专供实时进程使用, nice的值[-20,19]则映射到范围100~139

1454
来自专栏开发技术

spring集成mybatis实现mysql读写分离

       在网站的用户达到一定规模后,数据库因为负载压力过高而成为网站的瓶颈。幸运的是目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,...

981
来自专栏https://www.cnblogs.com/L

Hive篇--搭建Hive集群

Hive中搭建分为三中方式 a)内嵌Derby方式 b)Local方式 c)Remote方式 三种方式归根到底就是元数据的存储位置不一样。

1804
来自专栏禁心尽力

mybatis_基础篇

一、认识mybatis:     MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software founda...

1919

访问数据 - 反应方式(Vert.x入门的第4部分)

原文地址:https://dzone.com/articles/accessing-data-the-reactive-way

8504
来自专栏移动端开发

iOS 从实际出发理解多线程

前言 ----       多线程很多开发者多多少少相信也都有了解,以前有些东西理解的不是很透,慢慢的积累之后,这方面的东西也需要自己好好的总结一下。多线程从我...

2037
来自专栏魏琼东

分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

一、分布式消息总线以及基于Socket的实现      在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给...

3467

扫码关注云+社区