主题
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 | 进程ID | 12345 |
| USER | 启动进程的用户 | root |
| PR | 进程优先级 | 12 |
| NI | 进程优先级值(负值表示高优先级) | -20 |
| VIRT | 进程使用的虚拟内存 | 102400k |
| RES | 进程使用的物理内存 | 51200k |
| SHR | 进程使用的共享内存 | 20480k |
| S | 进程状态(S睡眠、R运行、Z僵尸等) | S |
| %CPU | CPU占用率 | 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
dfdf命令常用选项
| 选项 | 功能 | 示例 |
|---|---|---|
-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% /dataFilesystem:文件系统名称Size:文件系统总大小Used:已使用空间Avail:可用空间Use%:使用率Mounted on:挂载点
3. 磁盘IO监控:iostat命令详解
iostat命令概述
iostat命令用于监控系统的CPU和磁盘IO性能。
bash
iostatiostat命令常用选项
| 选项 | 功能 | 示例 |
|---|---|---|
-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, -u | top -d 3 -c |
df | 查看磁盘空间使用情况 | -h, -i, -T | df -h |
iostat | 监控磁盘IO性能 | -x, 1 3 | iostat -x 1 3 |
sar | 监控网络状态 | -n DEV, 1 3 | sar -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表示网络收发速度。