跳转到内容

Linux主机状态监控命令详解

课程介绍

接下来我们学习系统资源监控。top命令实时监控CPU、内存和进程状态,类似Windows任务管理器;df命令查看磁盘空间使用情况;iostat监控磁盘IO性能;sar命令监控网络状态。这些命令在系统运维和故障排查中非常重要,能帮你快速定位性能瓶颈和资源问题。

1. 系统资源监控:top命令详解

top命令概述

top命令是Linux系统中用于实时监控系统资源的强大工具,类似于Windows的任务管理器,默认每5秒刷新一次。

bash
top

退出top命令

  • 快捷键:Ctrl + C
  • 或按 q 键退出

top输出内容解析

1. 系统概览信息(前5行)

第1行:系统基本信息

  • top:命令名称
  • 14:30:00:当前系统时间
  • up 7:01:系统运行时间
  • 2 users:当前登录用户数
  • load average: 0.09, 0.13, 0.13:1分钟、5分钟、15分钟平均负载

第2行:进程信息

  • Tasks: 175 total:总进程数
  • 1 running:正在运行的进程数
  • 174 sleeping:睡眠状态进程数
  • 0 stopped:停止的进程数
  • 0 zombie:僵尸进程数

第3行:CPU使用情况

  • us:用户进程占用CPU百分比
  • sy:系统进程占用CPU百分比
  • ni:高优先级进程占用CPU百分比
  • id:CPU空闲百分比
  • wa:IO等待占用CPU百分比
  • hi:硬件中断占用CPU百分比
  • si:软件中断占用CPU百分比

第4行:物理内存使用情况

  • Mem: 8192000k total:物理内存总量
  • 2048000k used:已使用内存
  • 6144000k free:空闲内存
  • 512000k buffers/cache:缓冲和缓存占用内存

第5行:虚拟内存(交换空间)使用情况

  • Swap: 4096000k total:交换空间总量
  • 0k used:已使用交换空间
  • 4096000k free:空闲交换空间

2. 进程列表信息

列名含义示例
PID进程ID12345
USER启动进程的用户root
PR进程优先级12
NI进程优先级值(负值表示高优先级)-20
VIRT进程使用的虚拟内存102400k
RES进程使用的物理内存51200k
SHR进程使用的共享内存20480k
S进程状态(S睡眠、R运行、Z僵尸等)S
%CPUCPU占用率0.3
%MEM内存占用率0.6
TIME+进程累计使用CPU时间00:05:32
COMMAND进程启动命令/usr/bin/nginx

top命令常用选项

选项功能示例
-p只显示指定进程ID的信息top -p 12345
-d设置刷新间隔(秒)top -d 3
-c显示进程的完整命令top -c
-n指定刷新次数top -n 5
-b非交互式模式(适合输出到文件)top -b > top_output.txt
-i不显示闲置或无用的进程top -i
-u只显示指定用户的进程top -u username

top交互式快捷键

在top运行时,可以使用以下快捷键:

  • h:显示帮助信息
  • c:切换显示进程完整命令
  • f:控制显示的列
  • M:按内存占用率排序
  • P:按CPU占用率排序
  • T:按CPU使用时间排序
  • E:切换顶部内存显示单位
  • e:切换进程列表内存显示单位
  • l:切换显示平均负载和启动时间
  • t:切换显示CPU状态信息
  • m:切换显示内存状态信息

2. 磁盘空间监控:df命令详解

df命令概述

df命令用于查看文件系统的磁盘空间使用情况。

bash
df

df命令常用选项

选项功能示例
-h以人类可读的单位显示df -h
-i显示inode使用情况df -i
-T显示文件系统类型df -T
-a显示所有文件系统df -a

df -h输出解析

bash
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        20G  7.5G   12G  38% /
tmpfs           998M     0  998M   0% /dev/shm
/dev/sdb1        50G   1G    49G   2% /data
  • Filesystem:文件系统名称
  • Size:文件系统总大小
  • Used:已使用空间
  • Avail:可用空间
  • Use%:使用率
  • Mounted on:挂载点

3. 磁盘IO监控:iostat命令详解

iostat命令概述

iostat命令用于监控系统的CPU和磁盘IO性能。

bash
iostat

iostat命令常用选项

选项功能示例
-x显示详细的IO统计信息iostat -x
-c只显示CPU使用情况iostat -c
-d只显示设备IO情况iostat -d
1 3每1秒刷新一次,共刷新3次iostat 1 3

iostat -x输出解析

列名含义示例
Device磁盘设备名称sda
rrqm/s每秒合并的读请求数0.00
wrqm/s每秒合并的写请求数2.00
r/s每秒读请求数1.00
w/s每秒写请求数5.00
rkB/s每秒读取的KB数64.00
wkB/s每秒写入的KB数128.00
util磁盘利用率0.13%

关键指标解读

  • rkB/s:每秒读取数据量(KB)
  • wkB/s:每秒写入数据量(KB)
  • util:磁盘利用率百分比(越接近100%,说明磁盘IO压力越大)

4. 网络状态监控:sar命令详解

sar命令概述

sar命令用于收集、报告和保存系统活动信息,我们可以用它来监控网络状态。

bash
sar -n DEV

常用网络监控选项

  • -n DEV:查看网络接口状态
  • 1 3:每1秒刷新一次,共刷新3次

sar -n DEV输出解析

列名含义示例
IFACE网络接口名称ens33
rxpck/s每秒接收的数据包数10.50
txpck/s每秒发送的数据包数8.20
rxkB/s每秒接收的数据量(KB)2.26
txkB/s每秒发送的数据量(KB)17.01

关键指标解读

  • rxkB/s:网络下载速度(KB/s)
  • txkB/s:网络上传速度(KB/s)

5. 实践操作:综合监控练习

步骤1:监控系统资源

bash
top
# 观察系统概览信息
# 按P键按CPU排序
# 按M键按内存排序
# 按q键退出

步骤2:查看磁盘空间

bash
df -h
# 查看各分区使用情况
# 重点关注根目录(/)的使用率

步骤3:监控磁盘IO

bash
iostat -x 1 3
# 观察磁盘读写速度和利用率
# 注意util指标是否过高

步骤4:查看网络状态

bash
sar -n DEV 1 3
# 观察网络接口的收发数据量
# 注意rxkB/s和txkB/s指标

6. 命令速查

命令功能常用选项示例
top监控系统资源和进程-p, -d, -c, -n, -i, -utop -d 3 -c
df查看磁盘空间使用情况-h, -i, -Tdf -h
iostat监控磁盘IO性能-x, 1 3iostat -x 1 3
sar监控网络状态-n DEV, 1 3sar -n DEV 1 3

7. 常见问题与解决方案

问题解决方案
top命令显示太多进程,难以查看使用 -i 选项不显示闲置进程,或使用 f 键控制显示列
df命令显示的单位不直观使用 -h 选项以人类可读的单位显示(KB、MB、GB)
磁盘空间充足但无法创建文件检查inode使用情况:df -i,可能inode已用尽
系统响应慢,CPU空闲但IO等待高使用 iostat -x 检查磁盘util指标,可能磁盘IO瓶颈
网络速度慢,如何查看带宽使用使用 sar -n DEV 1 3 查看rxkB/s和txkB/s指标

课程总结

这节课我们学了系统监控命令。

top - 实时监控CPU和内存: 按P按CPU排序,按M按内存排序,按q退出

df - 查看磁盘空间: df -h - 用易读格式显示(GB、MB)

iostat - 监控磁盘IO: iostat -x - 查看磁盘读写速度和利用率

sar - 查看网络状态: sar -n DEV - 查看网络收发数据量

这些命令是系统维护的重要工具。


课后练习

练习1(基础)

请在Linux终端中执行以下操作:

  • 使用top命令查看系统负载
  • 按P键按CPU占用率排序
  • 找出CPU占用率最高的3个进程
  • 记录它们的PID和命令名

💡 提示:按q键退出top命令,使用top -p PID可以查看特定进程。

练习2(进阶)

请尝试:

  • 使用df -h命令查看所有文件系统的空间使用情况
  • 将结果保存到文件disk_usage.txt
  • 查看文件内容,确认哪些分区使用率较高
  • 使用df -i命令查看inode使用情况

💡 提示:使用重定向符> file.txt保存结果,如果inode使用率过高需要清理小文件。

练习3(拓展)

请尝试:

  • 使用iostat -x 1 10命令监控磁盘IO性能
  • 在另一个终端中复制一个大文件
  • 观察磁盘读写速度和util利用率的变化
  • 使用sar -n DEV 1 10命令监控网络状态

💡 提示:iostat的util指标接近100%表示磁盘IO压力大,rxkB/s和txkB/s表示网络收发速度。


评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径