写点什么

10 分钟带你了解 Linux 系统中的 Top 命令

  • 2024-04-02
    北京
  • 本文字数:3964 字

    阅读完需:约 13 分钟

前言

作为一个测试工程师,可能我们并不需要像运维人员那样时时刻刻去关注系统的运行情况,但是对于一些查看系统运行情况,以及性能情况的命令,我们还是需要了解并掌握的,本文就来给大家介绍一下 Linux 系统重非常重要的top命令。

获取更多技术资料,请点击!

什么是top命令

在 Linux 系统中,top 命令是一个非常实用的工具,用于动态监视系统的资源使用情况。它提供了一个交互式界面,展示了各种进程的 CPU、内存、以及其他资源的使用情况,以及系统的整体负载情况。

top命令使用

  1. 启动 Top 命令: 在终端中输入 top 并按下回车键即可启动 Top 命令。

  2. 查看进程信息: 默认情况下,Top 命令会显示系统中所有正在运行的进程,以及它们的 CPU 使用率、内存使用率等信息。你可以通过按下键盘上的 1 键来查看每个 CPU 核心的使用情况。

  3. 排序进程: Top 命令默认按照 CPU 使用率进行排序。你可以按下 P 键按照 CPU 使用率排序,按下M键按照内存使用率排序,按下 T 键按照运行时间排序等。

  4. 结束进程: 如果你需要结束某个进程,可以按下k键,然后输入要结束的进程的 PID(进程 ID)并按下回车键。

  5. 改变刷新频率: 默认情况下,Top 每隔 3 秒刷新一次信息。你可以按下 d 键来改变刷新频率,然后输入你希望的刷新时间间隔(单位是秒)。

  6. 退出 Top: 按下 q 键即可退出 Top 命令。

top命令输出解析

我们执行top命令后,会出现如下结果:


toptop - 14:07:53 up 256 days,  3:35,  1 user,  load average: 0.07, 0.03, 0.00Tasks: 162 total,   1 running, 161 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stMiB Mem :  15495.8 total,   7684.9 free,    648.9 used,   7162.0 buff/cacheMiB Swap:      0.0 total,      0.0 free,      0.0 used.  14505.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND3225815 root 20 0 1211152 242716 31368 S 1.0 1.5 1216:30 YDService3919907 root 20 0 636660 23796 5728 S 0.7 0.1 66:34.30 barad_agent 895 root 20 0 235592 7400 6568 S 0.3 0.0 15:42.06 accounts-daemon 25575 root 20 0 1749324 11644 8288 S 0.3 0.1 89:04.43 YDLive 661118 root 20 0 0 0 0 I 0.3 0.0 0:05.52 kworker/2:0-events1981516 root 20 0 0 0 0 I 0.3 0.0 0:00.03 kworker/u16:2-events_power_efficient1981889 ubuntu 20 0 9276 3936 3260 R 0.3 0.0 0:00.21 top 1 root 20 0 168684 12744 8376 S 0.0 0.1 13:27.41 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:09.82 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0.0 0.0 0:30.34 ksoftirqd/0 10 root 20 0 0 0 0 I 0.0 0.0 56:03.90 rcu_sched
复制代码


top命令输出了很多参数,真正的服务器负载情况我们要综合其他参数一起看,运行结果可以分为两部分:


第一部分是前 5 行,是系统整体的统计信息;


第二部分是第 8 行开始的进程信息,我们从上往下逐行依次进行说明。


系统整体的统计信息


第一行:


top - 14:07:53 up 256 days,  3:35,  1 user,  load average: 0.07, 0.03, 0.00
复制代码


  • top:当前时间

  • up:机器运行了多长时间

  • users:当前登录用户数

  • load average:系统负载,即任务队列的平均长度。三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。


第二行:


Tasks: 162 total,   1 running, 161 sleeping,   0 stopped,   0 zombie
复制代码


  • Tasks:当前有多少进程

  • running:正在运行的进程数

  • sleeping:正在休眠的进程数

  • stopped:停止的进程数

  • zombie:僵尸进程数


当前正在运行的进程越对,系统压力就会越大。


第三行:


%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
复制代码


  • us:用户空间占 CPU 的百分比(像 shell 程序、各种语言的编译器、各种应用、web 服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于 idle 状态,那么绝大多数的 CPU 时间都是运行在用户态)

  • sy: 内核空间占 CPU 的百分比(所有进程要使用的系统资源都是由 Linux 内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使 sy 变大,那就是大量的 IO 操作,因此在调查 IO 相关的问题时需要着重关注它)

  • ni:用户进程空间改变过优先级(ni 是 nice 的缩写,可以通过 nice 值调整进程用户态的优先级,这里显示的 ni 表示调整过 nice 值的进程消耗掉的 CPU 时间,如果系统中没有进程被调整过 nice 值,那么 ni 就显示为 0)

  • id: 空闲 CPU 占用率

  • wa: 等待输入输出的 CPU 时间百分比(和 CPU 的处理速度相比,磁盘 IO 操作是非常慢的,有很多这样的操作,比如,CPU 在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU 只能处于空闲状态。Linux 系统在计算系统平均负载时会把 CPU 等待 IO 操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过 wa 来判断系统的性能瓶颈是不是过多的 IO 操作造成的)

  • hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)。)

  • si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗 CPU 时间)

  • st:steal time


第四行:


MiB Mem :  15495.8 total,   7684.9 free,    648.9 used,   7162.0 buff/cache
复制代码


  • total:物理内存总量

  • free:空闲内存量

  • used:使用的内存量

  • buffer/cache:用作内核缓存的内存量


第五行:


MiB Swap:      0.0 total,      0.0 free,      0.0 used.  14505.7 avail Mem
复制代码


  • total:交换区内存总量

  • free:空闲交换区总量

  • used:使用的交换区总量

  • buffer/cache:缓冲的交换区总量


第四第五行分别是内存信息和 swap 信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的 free 变少的时候,其实我们并不需要太紧张。真正需要看的是 Swap 中的 used 信息。Swap 分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到 Swap 中。


进程信息


PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND3225815 root      20   0 1211152 242716  31368 S   1.0   1.5   1216:30 YDService3919907 root      20   0  636660  23796   5728 S   0.7   0.1  66:34.30 barad_agent    895 root      20   0  235592   7400   6568 S   0.3   0.0  15:42.06 accounts-daemon  25575 root      20   0 1749324  11644   8288 S   0.3   0.1  89:04.43 YDLive
复制代码


PID    进程idUSER  进程所有者的用户名PR       优先级NI    nice值,负值表示高优先级,正值表示低优先级VIRT  进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESRES    进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATASHR    共享内存大小,单位kbS    进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程%CPU  上次更新到现在的CPU时间占用百分比%MEM  进程使用的物理内存百分比TIME+  进程使用的CPU时间总计,单位1/100秒COMMAND  命令名/命令行
复制代码

top命令使用

top 命令的格式为:


top [选项]
复制代码


常用参数:


  • -d:指定每两次屏幕信息刷新之间的时间间隔,如希望每秒刷新一次,则使用:top -d 1

  • -p: 通过指定 PID 来仅仅监控某个进程的状态

  • -S: 指定累计模式

  • -s: 使 top 命令在安全模式中运行。这将去除交互命令所带来的潜在危险

  • -i: 使 top 不显示任何闲置或者僵死的进程

  • -c: 显示整个命令行而不只是显示命令名

总结

Top 命令是 Linux 系统中一个非常强大的工具,它可以帮助你实时监视系统的资源使用情况,识别和解决系统性能问题。通过本文介绍的基本使用方法,你可以更好地利用 Top 命令来管理你的 Linux 系统。


推荐学习

【霍格沃兹测试开发】7 天软件测试快速入门 带你从零基础/ 转行/ 小白/ 就业/ 测试用例设计实战


【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (上集)


【霍格沃兹测试开发】最新版!Web 自动化测试从入门到精通/ 电子商务产品实战/Selenium (下集)


【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(上集)


【霍格沃兹测试开发】明星讲师精心打造最新Python 教程软件测试开发从业者必学(下集)


【霍格沃兹测试开发】精品课合集/ 自动化测试/ 性能测试/ 精准测试/ 测试左移/ 测试右移/ 人工智能测试


【霍格沃兹测试开发】腾讯/ 百度/ 阿里/ 字节测试专家技术沙龙分享合集/ 精准化测试/ 流量回放/Diff


【霍格沃兹测试开发】Pytest 用例结构/ 编写规范 / 免费分享


【霍格沃兹测试开发】JMeter 实时性能监控平台/ 数据分析展示系统Grafana/Docker 安装


【霍格沃兹测试开发】接口自动化测试的场景有哪些?为什么要做接口自动化测试?如何一键生成测试报告?


【霍格沃兹测试开发】面试技巧指导/ 测试开发能力评级/1V1 模拟面试实战/ 冲刺年薪百万!


【霍格沃兹测试开发】腾讯软件测试能力评级标准/ 要评级表格的联系我


【霍格沃兹测试开发】Pytest 与Allure2 一键生成测试报告/ 测试用例断言/ 数据驱动/ 参数化

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
10分钟带你了解 Linux 系统中的 Top 命令_霍格沃兹测试开发学社_InfoQ写作社区