Linux Top 详细介绍,包含task排序

Linux Top

当我们在终端输入 top 命令时,会弹出一个变化的页面,打印出当前系统的大量重要指标,以及很多进程当前的运行情况:
在这里插入图片描述

可以看到,top 命令主要是两部分,第一部分为 头部指标,打印的是当前系统级别指标;第二部分为 进程任务监控,打印各个进程的当前运行情况。

头部指标

我们从上往下,逐行进行介绍。

top

这一行与 uptime 命令的输出极其相似:

在这里插入图片描述

打印的参数意义为:

  • 21:18:48 当前系统时间。
  • up 4:40 当前系统已经连续运行的时间。
  • 4 users 当前登陆的用户数量。
  • load average: 0.00, 0.01, 0.05 当前的平均负载: 5/10/15 分钟的平均负载。

其中 load average 是每 5 秒钟检查一次活跃的进程数,然后按照特定的算法计算的得出。使用
这 个 负 载 数 ÷ 逻 辑 C P U 个 数 > 1 这个负载数 ÷ 逻辑CPU个数 > 1 ÷CPU>1

说明系统已经在超负荷运转了。

这一行在 top 页面时,可以通过 l 进行开关。

Task

这行标识系统当前运行的进程有多少,多少个正在运行,有多少个在休眠,有多少个是 stopped 状态, 僵尸状态有多少个。

在这里插入图片描述

%Cpu

这行标识当前 CPU 的负载情况,显示的是百分比单位。

在这里插入图片描述

  • us

运行用户进程(未调整优先级)所占用的 cpu 时间,如果这个数很大,那么说明当前瓶颈很可能在 cpu 上,程序大多数为计算密集型。

  • sy

运行内核进程所占用的 cpu 时间。如果这个数较大,一般说明服务器资源较小,或出现其他问题。

  • ni

us 相同,都是运行用户进程所占用的 cpu 时间,如果这个数很大,但他是调整优先级的进程。

  • wa

用于等待 io 完成的 cpu 时间,如果这个值很大,说明程序大多数为 io 密集型。这时候可能 cpu 也会比较繁忙,因为一直在切换上下文。

  • hi

处理硬件中断的 cpu 时间。

  • si

处理软件中断的 cpu 时间。

  • st

虚拟机 hypervisor 占用的 cpu 时间,如果当前处于一个 hypervisor 下的 vm,这个 hypervisor 其实也是要消耗一部分 cpu 处理时间的。

top 命令界面,使用 t 进行切换,可以转换 %cpu 和 tasks 这两行的表达显示。

KiB Mem & KiB SWap

这两行标示的是内存的使用情况,类似于 free 命令的结果,但有区别:

在这里插入图片描述

free # free 命令结果
在这里插入图片描述

类似于 task 和 %Cpu 行,使用 m 可以切换 Kib Mem 和 KiB Swap 行的表示方式。

Kib Mem 指标
  • Mem total

物理内存总量。

  • Mem free

内存空间空闲总量。

  • Mem used

使用中的内存总量。

  • Mem buff/cache

内存中缓存的占用,如果开了关系型数据库,一般此类会占用较多。

Kib Swap 指标
  • Swap total

交换分区总量。

  • Swap used

交换分区占用量。

  • Swap free

交换分区空闲总量。

  • Swap avial Mem

交换分区中缓冲的总量。

理解

如果用 windows 的内存管理来看待这些指标是不行的,windows 是每个程序使用多少,占用多少;但 linux 有内存管理的特殊性,不能单单只看 free 这一项来认为我们内存空间只有这么多了。

Mem 中内存总量 used 指的是现在系统内核控制的内存大小,而 free 是内核认为还未纳入其管控的数量(如果你现在是虚拟机就知道我们给虚拟机 16G mem,并不是立马就占用了 16G。)。而 used 代表控制的内存大小,并不是当前程序正在使用的,而最多只能表示使用过,在使用后 used 并不会变为 free,所以理论上 free 只会越来越少,并不能通过这一个指标来判断当前服务器内存已经不足。

但我们总是想看到当前系统还剩余多少内存可以给新开的程序使用,这里有个简易的公式:

f r e e + b u f f e r s + c a c h e d   = a v a i l a b l e free + buffers + cached ~= available free+buffers+cached =available

而对于 Swap 空间,如果 Swap空间大小一直在不停变化,说明内核在不断在 Mem 和 Swap 两个空间中交换数据,说明 Mem 空间已经无法满足,Swap 中已经开始占用,系统内存真正不够用了!

进程任务监控

监控此时此刻系统中运行的任务情况:

  • PID 进程id,代表进程的唯一标识(那个该死的屁ID)

  • USER 该进程所有者的实际用户名

  • PR 进程的优先级,如果是字母rt标识这些进程处于实时优先级 rt_priority

这个值是最终的优先级标识,越大,优先级越高。

  • NI nice值,-20~20,越小优先级越高,用户最大设置为19.

这个值,设置后linux自己调度计算出最终优先级PR

  • VIRT 进程使用的虚拟内存总量,单位为kb,计算公式为:

S W A P + R E S = V I R T SWAP+RES=VIRT SWAP+RES=VIRT

  • RES 进程使用(还未被换出的)物理内存大小,单位kb,计算公式为:
    R E S = C O D E + D A T A RES=CODE+DATA RES=CODE+DATA

  • S 当前进程状态

  • D 不可中断的睡眠状态

  • R 运行

  • S 睡眠

  • T 跟踪/停止

  • Z 僵尸进程

  • %CPU 占用的 cpu 百分比

  • %MEM 占用的 mem 百分比

  • TIME+ 运行时间

  • COMMAND 进程名称

如果想看具体的进程路径或者启动命令,可以按 c 进行切换。( ls -ltr /proc/$PID/exe)

单位都可以通过 e 进行切换:

在这里插入图片描述

排序

默认排序是按照当前 CPU 排序,然后按照 PID 进行排序,我们更多的时候是希望自定义各类排序。我们可以在 top 命令期间按下:

P 以 cpu 占据时间百分比进行排序。

M 以 mem 占据时间百分比进行排序。

T 以积累占用 cpu 时间进行排序。

当然,我们还可以通过其他办法进行排序,比如:bx 也是博主经常使用的方式。

在这里插入图片描述

然后可以使用 shift+<shift+> 进行左右移动,按照 head 头进行降序排序。

其中 b 为高亮,x 为选中排序。

进程控制界面

top 命令界面,按下 f 能够进入进程控制页面。

在这个页面中,使用 空格 或者 d 能切换是否需要显示。

使用 s 来选择以那一列进行排序,

使用 进行命令选择。

q 退出到之前的页面。

在这里插入图片描述

帮助文档页面

top 命令页面,按下 h 可以进入帮助文档页面,里面详细的说明了各种使用参数:
在这里插入图片描述### 管理进程

杀死进程

k 可以给对应 pid 一个 kill -9 信号,用来杀死进程。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t4UI6YiD-1669301427531)(static/boxcni80uVzIZ54Cdcy8Kb4ORnf.png)]

nice 赋值

r 命令可以重新给一个 nice 值,进行优先级排序

退出

q 或者 ctrl+c

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值