一份逐条命令的实用指南,教你如何使用 top 和 htop 实时监控 Linux 服务器,并讲解如何在 Ubuntu 22.04/24.04 上读懂负载平均值、CPU、内存、交换分区、磁盘 I/O 和网络指标。
引言
当网站变慢,或某个应用开始出现超时,第一个要问的问题始终是同一个:服务器此刻到底在做什么? 在 Linux 上,你无需部署一整套庞大的监控系统就能回答这个问题。两个内置(或只需一条命令即可安装)的工具——top 和 htop——再加上少量查看指标的命令,就能让你清晰、实时地了解 CPU、内存、磁盘和网络的运行状况。
本教程将向你演示如何在 Ubuntu 22.04 或 24.04 LTS 上准确读懂这些指标,而这正是你在 Skyline Cloud VPS 或云服务器上所使用的同一套操作系统镜像。下文中的每一条命令都已在一台真实运行的 Ubuntu 主机上验证过。
前置条件
- 一台运行 Ubuntu 22.04/24.04(或类似发行版)的 Linux 服务器。
- 拥有可执行
sudo的用户的 SSH 访问权限。
第 1 步 —— 用 top 一眼掌握系统全局
top 随每个 Linux 发行版一同提供,所以就从它入手。运行它:
top
最有用的部分是顶部的信息头:
top - 21:50:56 up 72 days, 20:54, 3 users, load average: 1.67, 1.18, 0.76
Tasks: 20 total, 1 running, 19 sleeping, 0 stopped, 0 zombie
%Cpu(s): 29.0 us, 6.5 sy, 0.0 ni, 62.9 id, 0.0 wa, 0.0 hi, 1.6 si, 0.0 st
MiB Mem : 7937.4 total, 402.8 free, 5393.0 used, 2141.6 buff/cache
MiB Swap: 969.0 total, 7.7 free, 961.3 used. 2107.8 avail Mem
每一行所传达的信息:
- load average(负载平均值) —— 三个数字分别表示最近 1 分钟、5 分钟和 15 分钟的负载。请将它们与你的 CPU 核心数(运行
nproc查看)作对比。在一台 4 核服务器上,负载为4.0意味着完全繁忙;若数值持续远高于核心数,则说明系统过载。 - %Cpu(s) —— CPU 时间的细分。最值得关注的字段是:
us(用户进程)、sy(内核/系统)、id(空闲)和wa(等待磁盘 I/O)。wa偏高指向的是磁盘慢,而非 CPU 慢。在 VPS 上st(被窃取)高于 0,意味着有「吵闹的邻居」正在抢占你的 CPU 时钟周期。 - Mem / Swap(内存 / 交换分区) —— 包括总量、空闲、已用以及
buff/cache。真正要关注的数字是avail Mem,而不是free:Linux 会有意地把多余的内存用作缓存,因此「free」偏低是正常且健康的现象。
top 运行时常用的按键:按 M 按内存排序,按 P 按 CPU 排序,按 1 分别显示每个核心,按 k 通过 PID 终止某个进程,按 q 退出。
第 2 步 —— 安装并使用 htop 获得更友好的视图
htop 是一个交互式、彩色编码的进程查看器,比 top 易读得多。安装它:
sudo apt update
sudo apt install -y htop
然后运行:
htop
顶部会显示每个核心的 CPU 条、一个内存条和一个交换分区条。这些颜色对应不同的使用类型——就 CPU 条而言,蓝色是低优先级,绿色是用户态,红色是内核/系统态时间。下方是一个可滚动的进程列表。
相比 top 的主要优势:
- 用方向键滚动;无需把所有内容塞进一屏。
- 按
F6更改排序列,或按F4按进程名筛选。 - 按
F5切换到树状视图,展示父子进程关系。 - 按
F9向高亮的进程发送信号(终止)——无需输入 PID。
若要进行较长时间的观察,htop 通常是你在一个 SSH 窗口中保持打开、同时复现问题的那个工具。
第 3 步 —— 用 free 精确查看内存和交换分区
top 实时显示内存;free 则给出一份清晰的快照:
free -h
total used free shared buff/cache available
Mem: 7.8Gi 5.3Gi 417Mi 129Mi 2.1Gi 2.1Gi
Swap: 968Mi 961Mi 7.0Mi
请读取 available 这一列来判断真实的内存压力——它估算的是在不发生交换的前提下,可被新程序回收使用的内存量。如果 available 接近于零 并且 交换分区被大量使用,说明服务器内存吃紧,你应当扩容或排查内存泄漏。仅仅是轻度使用交换分区本身并不值得警惕。
第 4 步 —— 用 uptime 和 vmstat 理解负载与运行队列
如果想在不打开 top 的情况下用一行命令查看负载:
uptime
要观察是什么在随时间推移驱动着负载,vmstat 会按指定间隔对系统进行采样(这里是每隔 1 秒一次,共 5 次):
vmstat 1 5
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 984328 412820 232880 1960148 0 1 389 74 0 1 11 2 86 0 1
最左边的两列是关键:r 是等待 CPU 的进程数,b 是因 I/O 而被阻塞的进程数。如果 r 持续超过你的核心数,说明你受限于 CPU;而 b 持续偏高则意味着磁盘或网络 I/O 成为瓶颈。si/so 这两列显示换入/换出量——这里只要高于 0,就表示正在发生活跃的交换,会损害性能。
第 5 步 —— 用 iostat 观察磁盘 I/O
iostat 是 sysstat 软件包的一部分:
sudo apt install -y sysstat
iostat -xz 2 3
这会每隔 2 秒报告一次各设备的扩展统计信息,共三次。重点关注:
%util—— 设备的繁忙程度;数值接近 100% 意味着磁盘已饱和。await—— 每个 I/O 请求的平均耗时(毫秒),包含排队时间。await上升意味着磁盘正在吃力。r/s和w/s—— 每秒的读取数和写入数。
如果你在 top 中曾看到 wa 偏高,这里就是确认磁盘是否为元凶的地方。
第 6 步 —— 用 ss 检查网络连接
ss 是 netstat 的现代替代品。要快速查看套接字摘要:
ss -s
要列出正在监听的 TCP 端口以及各端口背后的进程:
sudo ss -tlnp
某个端口上的已建立连接数突然激增——同时 htop 中 CPU 偏高——往往指向流量骤增或某个滥用的客户端。
指标速查参考
| 指标 | 命令 | 健康表现 | 警告表现 |
|---|---|---|---|
| 负载平均值 | uptime、top |
等于或低于核心数 | 持续高于核心数 |
| CPU | top、htop |
id 高,wa/st 低 |
wa 高(磁盘)或 st 高(VPS 资源争用) |
| 内存 | free -h |
available 充裕 |
available 接近 0 且大量使用交换分区 |
| 运行队列 | vmstat 1 5 |
r 和 b 都低 |
r 高(CPU)或 b 高(I/O) |
| 磁盘 I/O | iostat -xz 2 3 |
%util 低、await 低 |
%util 接近 100%,await 上升 |
| 网络 | ss -s、ss -tlnp |
连接数稳定 | 连接数突然激增 |
结语
有了 top、htop、free、vmstat、iostat 和 ss,你几乎可以诊断任何「服务器感觉变慢了」的报告,而无需安装一整套监控平台。先用 htop 获取实时全景,再用 free -h 确认内存状况,当看到 I/O 等待偏高时则深入用 iostat 排查磁盘。
这些工具在配置得当的服务器上能发挥出最佳效果。在 Skyline Cloud VPS 或云服务器上,你将获得 Ubuntu 22.04/24.04 LTS 镜像、契合 PDPL、NCA 和 SDAIA 要求的境内数据驻留,以及本地阿拉伯语支持团队。欢迎了解完整的沙特阿拉伯云托管产品系列;如果你在同一套基础设施上运行邮件服务,也可以查看企业邮箱托管方案。
准备好在「不出王国境内」的基础设施上运用这些监控技能了吗?创建你的 Skyline Cloud 账户,几分钟内即可启动一台服务器。
Comments
0 total · 0 threads