Linux- Top命令查看系统资源状况

介绍

top命令是Linux下常用得性能分析工具,能够实时的显示系统中各个进程的资源占用状况,类似于平常使用的Windows任务管理器,除此之外,top还提供交互式的界面来筛选可用的信息。下面将分别介绍top命令的输出以及常用操作



统计信息

top命令前五行的输出是当前系统情况整体的统计信息区

top - 20:12:44 up 2 days,  9:49,  9 users,  load average: 0.83, 1.21, 1.58
Tasks: 370 total,   3 running, 367 sleeping,   0 stopped,   0 zombie
%Cpu(s):  9.7 us,  4.9 sy,  0.0 ni, 84.9 id,  0.0 wa,  0.0 hi,  0.4 si,  0.1 st
KiB Mem :  8173496 total,   657292 free,  5163996 used,  2352208 buff/cache
KiB Swap:  9437180 total,  7386364 free,  2050816 used.  2671772 avail Mem

第一行 任务队列信息

top - 20:12:44 up 2 days,  9:49,  9 users,  load average: 0.83, 1.21, 1.58
解释
20:12:44 当前服务器时间
up 2 days, 9:49 系统启动了2天9小时49分钟
9 users 当前有9个用户登录系统
load average: 1.15, 1.42, 1.44 load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况

其中load average代表系统负载,主要代表了在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。

多核CPU的话,满负荷状态的数字为 “1.00 * CPU核数”,即双核CPU为2.00,四核CPU为4.00。

通过以下命令可查看CPU个数以及信息

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

取得CPU核心数目N,用对应时间的负载值 / N,如果得到的值小于0.7即可无忧。

例如现在我们是4个单核CPU,5分钟的负载值是1.21,用1.21 / 4 ≈ 0.3,说明机器复杂良好,当超过0.7的时候就需要关注看如何处理了


第二行:任务信息

解释
370 total 系统目前进程总数
3 running 运行状态态的进程数量
367 sleeping 休眠状态的进程数量
0 stopped 停止状态的进程数量
0 zombie 僵尸状态的进程数量

系统现在共有370 个进程,其中处于运行中的有3个,367 个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。


第三行:CPU状态

%Cpu(s):  9.7 us,  4.9 sy,  0.0 ni, 84.9 id,  0.0 wa,  0.0 hi,  0.4 si,  0.1 st
解释
9.7 us user:用户空间占用CPU的百分比。
4.9 sy system:内核空间占用CPU的百分比。
0.0 ni nice:改变过优先级的进程占用CPU的百分比
84.9 id, idle:空闲CPU百分比
0.0 wa IO-wait:IO等待占用CPU的百分比(iowait)
0.0 hi 硬中断(Hardware IRQ)占用CPU的百分比
0.4 si 软中断(Software Interrupts)占用CPU的百分比
0.1 st 虚拟机管理程序从此虚拟机窃取的时间

第四行:内存状态

KiB Mem :  8173496 total,   657292 free,  5163996 used,  2352208 buff/cache
解释
8173496 total 物理内存总量(≈8G)
657292 free 使用中的内存总量(≈0.6G)
5163996 used 空闲中的内存总量(≈4.9G)
2352208 buff/cache 缓存大小

第五行:swap交换分区信息

KiB Swap:  9437180 total,  7386364 free,  2050816 used.  2671772 avail Mem
解释
9437180 total 交换区总量
7386364 free 空闲交换区总量
2050816 used 使用的交换区总量
2671772 avail Mem 可用内存总量

注:各单位之间转换关系

KiB =千字节= 1024字节
MiB =兆字节= 1024 KiB = 1,048,576字节
GiB = gibibyte = 1024 MiB = 1,073,741,824字节
TiB = tebibyte = 1024 GiB = 1,099,511,627,776字节
PiB = pebibyte = 1024 TiB = 1,125,899,906,842,624字节
EiB = exbibyte = 1024 PiB = 1,152,921,504,606,846,976字节

各进程状态监控

介绍完上边的系统统计信息后,接下来就是各个进程的状态监控

字段解释

字段 含义
PID 进程ID
USER 进程所有者
PR 进程优先级(priority)
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量
RES 进程使用的、未被换出的物理内存大小
SHR 共享内存大小
S 进程状态(D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程)
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 进程名称(命令名/命令行)

对于上面的字段,单独区分下nice值和priority优先级。

  • PR

PR (priority),被称为动态优先级,Priority/PRI 由 OS 内核动态调整,用户不能调整(PRI 值越低,进程执行的优先级越高),用户可通过调整 nice 值 来调整进程优先级,计算方式为:PRI(new) = PRI(old) + nice

  • NI

NICE值用于表示进程优先级的修正数值,其取值范围是-20至19,一共40个级别,由于进程最终的优先级由 PRI + Nice 值共同决定,PRI又不能进行修改,那么就只能通过修改Nice值来影响进程优先级,对应的值越小代表优先级越高,也被称为静态优先级,可以通过renicenice 命令修改



参数介绍

先单独介绍top的命令参数,通过-h查看常用的参数,更详细的还是参考man top

[root@suhaow ~]# top -h
  procps-ng version 3.3.10
Usage:
  top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]
参数 说明
-d:Delay-time 间隔秒数
-n:Number-of-iterations 信息更新次数,次数达到退出
-u:User-filter-mode 指定 用户
-p:Monitor-PIDs 指定 pid
-o:Override-sort-field 指定 排序列
-w:Output-width-override 输出宽度


交互命令

输入top命令后,再敲入h可以查看互动命令,可以自己手动敲敲试试效果

  Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
  l,t,m     Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
  0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
  f,F,X     Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width

  L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
  R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
  c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
  x,y     . Toggle highlights: 'x' sort field; 'y' running tasks
  z,b     . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
  u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
  n,#,^O  . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
  C,...   . Toggle scroll coordinates msg for: up,down,left,right,home,end

  k,r       Manipulate tasks: 'k' kill; 'r' renice
  d or s    Set update interval
  W,Y       Write configuration file 'W'; Inspect other output 'Y'
  q         Quit

介绍上述中比较常用的几个互动命令:

  • h 显示帮助画面,给出一些简短的命令总结说明
  • k 终止一个进程。
  • i 忽略闲置和僵死进程。这是一个开关式命令。
  • r 重新安排一个进程的优先级别
  • S 切换到累计模式
  • s 改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s
  • f或者F 从当前显示中添加或者删除项目
  • o或者O 改变显示项目的顺序
  • l 切换显示平均负载和启动时间信息
  • m 切换显示内存信息
  • t 切换显示进程和CPU状态信息
  • c 切换显示命令名称和完整命令行
  • M 根据驻留内存大小进行排序
  • P 根据CPU使用百分比大小进行排序
  • T 根据时间/累计时间进行排序
  • W 将当前设置写入~/.toprc文件中
  • q 退出程序

除此之外还有一些对任务区域的操作,都可在man手册中查看到

  Task-Area-defaults
              b - Bold hilite      Off (use `reverse')     # 高亮
            * c - Command line     Off (name, not cmdline) # 完整显示命令行
            * i - Idle tasks       On  (show all tasks)    
              J - Num align right  On  (not left justify)  # 数字是否右对齐
              j - Str align right  Off (not right justify) # 字符是否右对齐
              R - Reverse sort     On  (pids high-to-low)  # 反转排列顺序
            * S - Cumulative time  Off (no, dead children) # 累计时间
            * u - User filter      Off (show euid only)     # 用户名过滤
            * U - User filter      Off (show any uid)       #
              V - Forest view      On  (show as branches)   # 展示父子关系
              x - Column hilite    Off (no, sort field)       #列高亮
              y - Row hilite       On  (yes, running tasks)   #行高亮
              z - color/mono       On  (show colors)          #变色


实用操作

高亮显示选中进程

敲击键盘“b”(打开/关闭高亮效果),top的视图变化如下:
Linux- Top命令查看系统资源状况_第1张图片


高亮选中列

先敲击"b"(打开/关闭高亮效果),再敲击“x”(打开/关闭 排序列的加亮效果)
Linux- Top命令查看系统资源状况_第2张图片

通过shift+<向左改变排序列,shift+>向右改变排序列,由上图可知道默认是按照CPU占用率排序,敲下shift+>就选择了按照右侧的内存占用率进行排序
Linux- Top命令查看系统资源状况_第3张图片

想改变排列数据敲"R"即可


显示完整命令

通过top -c参数进入到top即可查看完整COMMAND
在这里插入图片描述
也可进入后直接敲"c"即可


显示指定进程信息

先查询要观察进程的PID

[root@suhw ~]# ps aux|grep mysql
root     11500  0.0  0.0 112712   960 pts/2    S+   11:24   0:00 grep --color=auto mysql
mysql    23679  1.2  0.8 3742680 140580 ?      Ssl  Jul20  13:16 /usr/sbin/mysqld

通过top -p 23679进行查看
Linux- Top命令查看系统资源状况_第4张图片


日后遇到常用的操作再继续添加。

你可能感兴趣的:(Linux)