Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux监控系统资源

Linux命令编写一个用于监控系统资源的脚本

作者:不拘小节的竹笋_ecLhal

这篇文章主要为大家详细介绍了如何通过Linux命令编写一个用于监控系统资源的脚本,支持CPU、内存、磁盘使用率和系统负载等监控项,希望对大家有所帮助

介绍

我给你写一个开箱即用、功能完整、格式清晰的 Linux 监控脚本,支持监控:

脚本会自动格式化输出,可以定时运行、日志记录、也可配合告警使用。

完整脚本:sys_monitor.sh

#!/bin/bash
# ==============================================
# Linux 系统资源监控脚本
# 功能:CPU / 内存 / 磁盘 / 负载 / 网络 / 进程
# ==============================================
# 日志输出文件(可自定义)
LOG_FILE="/var/log/sys_monitor.log"
# 获取当前时间
CURRENT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
# ==============================================
# 1. 输出标题
# ==============================================
echo -e "\n==================================================" | tee -a $LOG_FILE
echo "系统监控报告 - $CURRENT_TIME" | tee -a $LOG_FILE
echo "==================================================" | tee -a $LOG_FILE
# ==============================================
# 2. 系统版本与主机信息
# ==============================================
echo -e "\n📌 主机信息:" | tee -a $LOG_FILE
hostnamectl | grep "Static hostname" | awk '{print "主机名: " $3}' | tee -a $LOG_FILE
hostnamectl | grep "Operating System" | cut -d: -f2 | tee -a $LOG_FILE
hostnamectl | grep "Kernel" | cut -d: -f2 | tee -a $LOG_FILE
# ==============================================
# 3. CPU 使用率
# ==============================================
echo -e "\n📌 CPU 使用情况:" | tee -a $LOG_FILE
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *([0-9.]*)%* id.*/\1/" | awk '{print 100 - $1}')
echo "CPU 总使用率: $CPU_USAGE%" | tee -a $LOG_FILE
# ==============================================
# 4. 内存使用率
# ==============================================
echo -e "\n📌 内存使用情况:" | tee -a $LOG_FILE
free -h | awk 'NR==2{
    printf "总内存: %s\n已用: %s\n空闲: %s\n使用率: %.2f%%\n", $2, $3, $4, $3/$2*100
}' | tee -a $LOG_FILE
# ==============================================
# 5. 系统负载(1/5/15分钟)
# ==============================================
echo -e "\n📌 系统负载:" | tee -a $LOG_FILE
uptime | awk '{print "1分钟负载: " $10 "  5分钟负载: " $11 "  15分钟负载: " $12}' | tee -a $LOG_FILE
# ==============================================
# 6. 磁盘使用率(根分区 /)
# ==============================================
echo -e "\n📌 磁盘使用率:" | tee -a $LOG_FILE
df -h / | awk 'NR==2{
    printf "总容量: %s\n已用: %s\n可用: %s\n使用率: %s\n", $2, $3, $4, $5
}' | tee -a $LOG_FILE
# ==============================================
# 7. 网络流量(网卡名可自行修改)
# ==============================================
echo -e "\n📌 网络流量(网卡 eth0):" | tee -a $LOG_FILE
# 若网卡不是 eth0,用 ip addr 查看后替换
sar -n DEV 1 1 | grep eth0 | awk 'NR==3{
    printf "接收流量: %.2f MB/s\n发送流量: %.2f MB/s\n", $5/1024, $6/1024
}' | tee -a $LOG_FILE
# ==============================================
# 8. 占用资源最高的 5 个进程
# ==============================================
echo -e "\n📌 TOP5 占用 CPU 最高进程:" | tee -a $LOG_FILE
ps -aux --sort=-%cpu | head -6 | awk '{printf "%-8s %-6s %-6s %s\n", $1, $2, $3, $11}' | tee -a $LOG_FILE
echo -e "\n📌 TOP5 占用内存最高进程:" | tee -a $LOG_FILE
ps -aux --sort=-%mem | head -6 | awk '{printf "%-8s %-6s %-6s %s\n", $1, $2, $4, $11}' | tee -a $LOG_FILE
# ==============================================
# 结束
# ==============================================
echo -e "\n==================================================\n" | tee -a $LOG_FILE

使用方法

创建脚本

vi sys_monitor.sh

把上面代码粘贴进去,保存退出。

赋予执行权限

chmod +x sys_monitor.sh

运行

./sys_monitor.sh

查看日志

cat /var/log/sys_monitor.log

脚本效果预览

==================================================
系统监控报告 - 2025-12-17 15:30:00
==================================================

📌 主机信息:
主机名: localhost
Operating System: CentOS Stream 9
Kernel: Linux 5.14.0-xxx

📌 CPU 使用情况:
CPU 总使用率: 12.5%

📌 内存使用情况:
总内存: 7.6Gi
已用: 2.3Gi
空闲: 4.1Gi
使用率: 30.20%

...

可选增强功能(你可以直接加进去)

超过阈值自动告警(示例)

# 磁盘使用率超过 85% 告警
DISK_USAGE=$(df -h / | grep / | awk '{print $5}' | sed 's/%//g')
if [ $DISK_USAGE -gt 85 ]; then
    echo "⚠️  磁盘使用率过高!当前:$DISK_USAGE%" | tee -a $LOG_FILE
    # 可以发邮件、企业微信、钉钉告警
fi

定时监控(每分钟执行)

crontab -e

添加:

* * * * * /root/sys_monitor.sh

到此这篇关于Linux命令编写一个用于监控系统资源的脚本的文章就介绍到这了,更多相关Linux监控系统资源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文