在 Linux 运维、开发或日常使用中,快速掌握系统资源状态是必备技能 ------ 无论是排查性能瓶颈、监控服务稳定性,还是定位故障原因,都离不开核心资源查看命令。本文将系统梳理 CPU、内存、磁盘、网络四大资源的常用命令,结合实例解析和实战技巧,帮你高效搞定 Linux 资源监控。
一、CPU 资源查看:精准掌握处理器状态
CPU 是系统运算核心,查看其使用率、进程占用、负载情况,能快速判断是否存在 "CPU 瓶颈"。
1. top:实时监控 CPU 与进程(最常用)
top 是 Linux 自带的实时系统监控工具,默认每 3 秒刷新一次,核心展示 CPU、内存使用情况及进程排名。
基本用法:
sh
top # 启动实时监控
核心输出解析:
-
第一行(系统信息):
top - 10:23:45 up 2 days, 3:15, 2 users, load average: 0.85, 0.92, 0.78load average: 0.85, 0.92, 0.78:1 分钟、5 分钟、15 分钟系统负载(关键指标)。对于单核 CPU,负载≤1 表示正常;多核 CPU 可按 "核心数 ×1" 判断(如 4 核 CPU 负载≤4 正常)。
-
第三行(CPU 使用率):
%Cpu(s): 15.0 us, 5.0 sy, 0.0 ni, 78.5 id, 1.0 wa, 0.0 hi, 0.5 si, 0.0 st-
us:用户空间程序占用 CPU 百分比(如应用程序); -
sy:内核空间占用 CPU 百分比(如系统调用); -
id:空闲 CPU 百分比(越低表示 CPU 越繁忙); -
wa:等待 IO(磁盘 / 网络)的 CPU 时间百分比(过高可能是 IO 瓶颈)。
-
实用快捷键:
-
P:按 CPU 使用率降序排序进程; -
M:按内存使用率降序排序; -
q:退出监控; -
1:显示所有 CPU 核心的独立使用率(多核机器必备)。
2. mpstat:查看多核 CPU 详细状态
top 适合整体监控,mpstat 更擅长展示单个 CPU 核心的使用率,排查 "某核心过载" 问题。
基本用法:
sh
mpstat # 查看所有CPU平均状态
mpstat -P ALL # 查看每个CPU核心的详细状态
mpstat 1 5 # 每1秒刷新一次,共输出5次(适合实时跟踪)
核心输出解析:
CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
all 12.35 0.00 4.65 1.20 0.00 0.30 0.00 0.00 0.00 81.50
0 15.20 0.00 5.10 1.30 0.00 0.40 0.00 0.00 0.00 78.00
1 10.50 0.00 4.20 1.10 0.00 0.20 0.00 0.00 0.00 84.00
- 重点关注
%idle(空闲率):若某核心%idle持续低于 10%,可能是该核心被进程占用过高。
3. ps:查看进程 CPU 占用(非实时)
ps 用于列出当前进程,搭配参数可筛选 CPU 使用率最高的进程,适合快速定位 "CPU 杀手"。
实用命令:
sh
ps aux --sort=-%cpu | head -10 # 按CPU使用率降序,显示前10个进程
-
aux:显示所有用户(a)、包含无终端进程(x)、详细格式(u); -
--sort=-%cpu:按 CPU 使用率倒序排列(-表示降序); -
head -10:只显示前 10 条结果。
二、内存资源查看
1. free
free 简洁展示物理内存、交换分区(Swap)的使用情况,建议搭配 -h 参数(人性化单位)。
基本用法:
sh
free -h # 以KB/MB/GB显示
核心输出解析:
total used free shared buff/cache available
Mem: 15Gi 3.2Gi 8.5Gi 256Mi 3.8Gi 11Gi
Swap: 19Gi 0B 19Gi
-
total:总内存; -
used:已使用内存(含进程占用、缓存、缓冲区); -
free:完全空闲的内存; -
available:实际可分配给新进程的内存(关键指标,含空闲内存 + 可回收缓存); -
Swap:交换分区(当物理内存不足时,系统会将部分数据写入 Swap,性能较低)。
2. top/ps:查看进程内存占用
与 CPU 监控一致,top 和 ps 同样可查看进程内存占用,核心关注两个指标:
-
RES(Resident Set Size):进程实际占用的物理内存(不含 Swap); -
VIRT(Virtual Memory):进程虚拟内存(含物理内存 + Swap + 共享库)。
sh
# 用top查看进程内存(按M排序)
top -o %MEM # 按内存使用率降序
# 用ps查看内存占用前10的进程
ps aux --sort=-%mem | head -10
3. vmstat:监控内存与虚拟内存交互
vmstat 可查看内存、Swap、IO 的交互状态,适合排查 "内存泄漏" 或 "Swap 过度使用" 问题。
基本用法:
sh
vmstat 1 5 # 每1秒刷新一次,共5次
核心输出解析:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 8945216 51232 4023456 0 0 12 28 123 345 12 5 81 2 0
-
si(swap in):从 Swap 读入物理内存的数据量(持续非 0 表示物理内存不足); -
so(swap out):从物理内存写入 Swap 的数据量(持续非 0 需警惕内存瓶颈)。
三、磁盘资源查看
磁盘是数据存储核心,需关注两个维度:存储空间使用 (是否满了)和IO 性能(读写速度、繁忙程度)。
1. df:查看磁盘分区存储空间
df 用于显示磁盘分区的总容量、已用空间、剩余空间及挂载点,搭配 -h(人性化单位)和 -T(显示文件系统类型)更实用。
基本用法:
sh
df -hT # 显示文件系统类型+人性化单位
核心输出解析:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 500G 89G 376G 19% /
/dev/sdb1 xfs 2.0T 580G 1.4T 30% /data
tmpfs tmpfs 7.8G 0 7.8G 0% /dev/shm
- 重点关注
Use%(使用率):若某分区使用率≥90%,需及时清理文件(如日志、临时文件),避免磁盘满导致服务异常。
2. du:查看目录 / 文件占用空间
df 查看分区整体占用,du 则精准定位 "哪个目录 / 文件占空间最大",适合清理磁盘时使用。
sh
# 查看当前目录下所有子目录的占用空间(按大小排序)
du -sh * | sort -rh
# 查看/data目录下占用前10的文件/目录(递归)
du -ah /data | sort -rh | head -10
-
du -sh *:s显示总大小,h人性化单位,*匹配当前目录所有子项; -
sort -rh:r降序,h按人性化单位排序(如 10G、2G、500M)。
3. iostat:监控磁盘 IO 性能
磁盘 IO 繁忙或读写速度慢,会导致程序卡顿(如数据库查询超时),iostat 可查看磁盘 IO 使用率、读写速度等指标。
基本用法:
sh
iostat -x 1 5 # 每1秒刷新一次,共5次,显示详细IO指标
核心输出解析:
Device rMB/s wMB/s rrqm/s wrqm/s %util
sda 2.30 8.50 0.00 0.00 12.5
sdb 0.50 3.20 0.00 0.00 4.8
-
%util(IO 使用率):关键指标,若持续≥80% 表示磁盘 IO 繁忙(如机械硬盘读写频繁); -
rMB/s/wMB/s:每秒读写数据量(MB),可判断磁盘读写压力。
四、网络资源查看:排查网络连通与带宽问题
网络问题(如端口占用、带宽耗尽、连接异常)是服务访问失败的常见原因,以下命令覆盖网络状态、端口、带宽监控。
1. netstat:查看网络连接与端口
netstat 用于列出网络连接、端口监听、路由表等信息,适合快速排查 "端口被占用""异常连接"。
sh
# 查看所有监听端口(TCP+UDP)
netstat -tuln
# 查看某端口(如8080)的占用进程
netstat -tulnp | grep 8080
# 查看所有已建立的TCP连接
netstat -an | grep ESTABLISHED
-
参数说明:
t:TCP 协议;u:UDP 协议;l:监听状态;n:显示 IP + 端口(不解析域名);p:显示占用进程 PID 和名称。
2. ss:替代 netstat 的高效工具
ss 是 Linux 较新的网络工具,功能与 netstat 类似,但速度更快、支持更多参数,适合大并发场景。
sh
# 查看所有监听端口(比netstat更快)
ss -tuln
# 查看80端口的连接数
ss -t state established '(dst :80 or src :80)' | wc -l
# 查看进程对应的端口(需root权限)
ss -tulnp | grep java
3. iftop:实时监控网络带宽
iftop 是实时带宽监控工具,能显示各网络连接的上行 / 下行速率,适合排查 "带宽被占满" 问题(需先安装:yum install iftop 或 apt install iftop)。
基本用法:
sh
iftop # 启动实时监控
核心输出解析:
-
顶部显示网络接口(如 eth0)的总上行 / 下行速率;
-
中间列表显示各连接的源 IP、目标 IP、实时速率;
-
底部显示累计流量统计。
快捷键:
-
s:切换显示源 IP; -
d:切换显示目标 IP; -
q:退出监控。
五、组合命令高效排查问题
单一命令只能查看局部状态,组合使用能快速定位故障
1、服务卡顿,排查 CPU 瓶颈
sh
# 1. 查看CPU整体负载和进程占用
top -o %CPU
# 2. 若负载高,查看多核CPU是否均衡
mpstat -P ALL 1
# 3. 定位占用CPU最高的进程(并查看其线程)
ps aux --sort=-%cpu | head -5
pstree -p 进程PID # 查看进程的线程树
2、内存不足,服务崩溃
sh
# 1. 查看内存整体使用
free -h
# 2. 定位占用内存最高的进程
ps aux --sort=-%mem | head -10
# 3. 查看进程的详细内存使用(如Java进程)
jmap -heap 进程PID # 需安装JDK
3、网络不通,端口无法访问
sh
# 1. 查看端口是否监听
netstat -tulnp | grep 目标端口(如8080)
# 2. 若未监听,检查服务是否启动;若已监听,查看防火墙是否放行
firewall-cmd --list-ports # CentOS防火墙
ufw status # Ubuntu防火墙
# 3. 测试网络连通性(本地/远程)
telnet 目标IP 目标端口
ping 目标IP # 测试网络可达性