欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-23 15:24:22
...

介绍

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

[aaa@qq.com ~]# 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命令查看系统资源状况


高亮选中列

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

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

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


显示完整命令

通过top -c参数进入到top即可查看完整COMMAND
Linux- Top命令查看系统资源状况
也可进入后直接敲"c"即可


显示指定进程信息

先查询要观察进程的PID

[aaa@qq.com ~]# 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命令查看系统资源状况


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

相关标签: Linux linux top