用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

在进行应用部署、系统调试或资源压力测试时,实时掌握系统资源的使用情况至关重大。虽然市面上有许多优秀的开源监控平台(如 Prometheus + Grafana、Zabbix、Netdata 等),但对于临时性、轻量级的监控需求而言,借助 Bash 脚本快速搭建一个简易监控工具,不仅高效实用,更是系统管理员手中的一把利器。

本文将详尽介绍如何使用不足 10 行的 Bash 脚本,在 Linux 环境下实现对 CPU、内存和磁盘使用率的实时监控。该脚本每秒输出一次资源占用信息,并可将结果输出到日志文件中,方便后续导入 Excel 进行可视化分析。适用于测试环境、资源评估以及新应用上线前的压力分析。

一、监控方案概览

本脚本主要分为三部分:

  1. 内存使用率监控
  2. 磁盘使用率监控
  3. CPU 使用率监控

并通过 while 循环定时刷新数据,每次输出一行三列的数据表,记录系统资源使用情况。


二、监控内存使用率:free + awk

我们使用如下命令提取当前系统的内存使用百分比:

free -m | awk 'NR==2{printf "%.2f%%		", $3*100/$2 }'

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

原理解析:

  • free -m 会输出以 MB 为单位的内存使用情况。

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

  • awk 'NR==2{…}' 取第二行(Mem 行)。
  • $3 为已用内存,$2 为总内存,$3*100/$2 即计算使用率。

三、监控磁盘使用率:df + awk

命令如下:

df -h | awk '$NF=="/"{printf "%s		", $5}'

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

原理解析:

  • df -h 输出所有挂载点的磁盘使用情况。
  • $NF==”/” 表明匹配挂载在根目录 / 的那一行。
  • $5 是使用率字段,形如 7%

示例输出:

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

四、监控 CPU 使用率:top + grep + awk top -bn1 | grep load | awk '{printf “%.2f%%
“, $(NF-2)}'

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

原理解析:

  • top -bn1:一次性以 batch 模式运行 top 命令。
  • grep load:筛选包含 load average 的行。
  • $(NF-2):倒数第三个字段,即 1 分钟平均负载(例如 0.00),我们将其近似表明为 CPU 使用率。

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

注意:此方法虽不能精准反映 CPU 百分比,但在轻量级监控中具有代表性,适合趋势观察。


五、组装脚本核心逻辑

将三个子命令分别封装到变量中,并构建一个持续运行的循环:

MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%		", $3*100/$2 }')
DISK=$(df -h | awk '$NF=="/"{printf "%s		", $5}')
CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%		
", $(NF-2)}')

定义运行时长,并以 5 秒为间隔输出数据:

end=$((SECONDS+3600)) # 运行 1 小时
while [ $SECONDS -lt $end ]; do
  echo "$MEMORY$DISK$CPU"
  sleep 5
done

六、完整 Bash 脚本(stats.sh)

#!/bin/bash
printf "Memory		Disk		CPU
"
end=$((SECONDS+3600))  # 运行一小时,可修改为任意秒数

while [ $SECONDS -lt $end ]; do
  MEMORY=$(free -m | awk 'NR==2{printf "%.2f%%		", $3*100/$2 }')
  DISK=$(df -h | awk '$NF=="/"{printf "%s		", $5}')
  CPU=$(top -bn1 | grep load | awk '{printf "%.2f%%		
", $(NF-2)}')
  echo "$MEMORY$DISK$CPU"
  sleep 5
done

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

执行方式:

chmod +x stats.sh
./stats.sh

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具


七、保存数据到日志文件以供分析

若希望将监控结果保存:

./stats.sh >> resource_log.txt

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

可在 Excel 中打开 resource_log.txt,使用制表符分隔进行图表分析。

用 10 行 Bash 脚本打造轻量级 Linux 系统资源监控工具

© 版权声明

相关文章

暂无评论

none
暂无评论...