Linux资源监控是系统管理员和开发人员日常工作中不可或缺的一部分,通过实时或历史数据掌握CPU、内存、磁盘、网络等资源的使用情况,能够快速定位性能瓶颈、排查故障以及优化系统配置,以下是Linux系统中常用的资源监控命令及其详细使用方法,涵盖基础工具和进阶分析手段。

CPU监控命令
CPU是系统的核心资源,监控其使用率、负载和进程级占用情况是性能分析的基础。
-
top
top是动态实时监控工具,默认按CPU使用率排序,显示进程信息,常用参数包括:-d:设置刷新间隔(如-d 5每5秒刷新)。-p:监控指定进程ID(如-p 1234)。-c:显示完整的命令行而非进程名。
输出中,%us(用户空间占用)、%sy(内核占用)、%id(空闲)等列直观反映CPU负载。
-
htop
htop是top的增强版,支持颜色区分、鼠标操作、进程树形展示,更易用,安装后直接运行,可通过F6选择排序字段,F2设置显示列。 -
mpstat
属于sysstat工具包,用于多核CPU的详细统计,例如mpstat -P ALL 1每秒输出各核心的使用率,%usr、%nice、%sys等字段区分不同类型的CPU占用。
(图片来源网络,侵删) -
uptime
显示系统平均负载(1分钟、5分钟、15分钟),负载值超过CPU核心数时可能表示过载,例如uptime输出load average: 0.5, 0.8, 1.2,其中1.2为15分钟均值。
内存监控命令
内存不足会导致系统缓慢或OOM(Out of Memory)错误,需重点关注使用率和缓存占用。
-
free
free -h以人类可读格式(GB/MB)显示内存总量、已用、空闲、缓冲/缓存等。-m强制以MB为单位,关键列:-/+ buffers/cache为实际可用内存(等于free+buffers+cache)。 -
vmstat
vmstat 1每秒输出内存、进程、IO等摘要信息。si(swap in)、so(swap out)频繁表示内存不足;buff(缓冲区)、cache(缓存)占用高属正常,可通过释放缓存(如sync; echo 1 > /proc/sys/vm/drop_caches)临时清理。
(图片来源网络,侵删) -
smem
需安装smem工具,可按进程/用户精确计算内存占用(区分PSS、USS等指标),避免top中因缓存统计导致的误差。
磁盘监控命令
磁盘IO性能直接影响文件读写速度,需关注使用率、IOPS和延迟。
-
df
df -h显示各分区的磁盘使用率、挂载点等。-i查看inode使用情况,inode耗尽会导致无法创建文件。 -
du
du -sh *统计当前目录下各子目录大小,-h人性化显示,--max-depth=1限制递归深度,例如du -sh /var/log查看日志目录占用。 -
iostat
iostat -xz 1(需sysstat)显示磁盘设备(如sda)的%util(使用率)、await(平均延迟)、r/s/w/s(读写请求数)。%util超过70%可能表示IO瓶颈。 -
iotop
类似top的磁盘IO监控工具,-o只显示正在IO操作的进程,直观定位高IO进程。
网络监控命令
网络流量异常可能意味着DDoS攻击或应用配置问题,需实时监控带宽和连接状态。
-
iftop
iftop按带宽使用率排序显示实时流量,支持-n(不解析域名)、-P(按端口显示),安装后运行,界面显示发送/接收流量及对应IP。 -
netstat
netstat -an显示所有网络连接(-tTCP、-uUDP、-n数字格式),-l只监听端口,-p显示进程ID,例如netstat -tuln | grep :80查看80端口监听情况。 -
ss
ss是netstat的替代品,速度更快。ss -tuln显示TCP/UDP监听端口,ss -tp查看TCP连接对应的进程。 -
nethogs
按进程统计实时网络带宽占用,-d设置刷新间隔,适合定位高流量进程。
综合监控工具
-
glances
Python开发的全能监控工具,glances -t 5每5秒刷新,整合CPU、内存、磁盘、网络、进程等信息,支持Web界面(-w)。 -
dstat
dstat -tcmnd --top-cpu同时显示CPU、内存、网络、磁盘IO及Top进程,参数灵活,可自定义输出列。
常用监控命令速查表
| 监控目标 | 命令 | 关键参数/用途 |
|---|---|---|
| CPU | top | -d刷新间隔,-p指定进程 |
| mpstat | -P ALL各核心统计 |
|
| 内存 | free | -h人性化显示,-mMB单位 |
| vmstat | si/soswap交换,buff/cache缓冲/缓存 |
|
| 磁盘 | df | -h使用率,-iinode使用率 |
| iostat | %util使用率,await延迟 |
|
| 网络 | iftop | -n数字IP,-P按端口统计 |
| ss | -tuln监听端口,-tpTCP连接进程 |
|
| 综合 | glances | -t间隔,-wWeb界面 |
相关问答FAQs
Q1: 如何定位导致CPU使用率100%的进程?
A1: 可通过以下步骤定位:
- 运行
top -d 1或htop,按%CPU列排序,找到占用最高的进程。 - 若
top中%wa(IO等待)高,可能是磁盘瓶颈,用iotop检查IO进程。 - 若为用户进程,可结合
strace -p PID跟踪系统调用,或perf top -p PID分析CPU热点函数。 - 若为内核进程(如
ksoftirqd),需检查驱动或硬件问题。
Q2: 如何判断内存是否不足?
A2: 通过以下指标综合判断:
free -h中available或-/+ buffers/cache持续低于10%总内存,且si/so(vmstat)非零,表示内存不足触发swap。- 应用频繁OOM(日志中出现
Out of memory: Killed process),或响应缓慢。 - 缓存/缓冲区占用过高(如
buff/cache占80%内存)但系统仍卡顿,可通过echo 3 > /proc/sys/vm/drop_caches释放后观察性能是否恢复,若恢复则需扩容内存或优化应用内存使用。
