找回密码
 立即注册
查看: 1061|回复: 0

服务器CPU、内存、硬盘和网络监控

[复制链接]

69

主题

0

回帖

11万

积分

VIP

积分
117731
发表于 2025-1-11 15:16:57 | 显示全部楼层 |阅读模式
本帖最后由 Millionaire 于 2025-1-12 00:59 编辑

hd.sh(硬件:CPU、内存、硬盘)
  1. #!/bin/bash

  2. # 获取当前日期和时间
  3. DATE=$(date '+%Y-%m-%d %H:%M:%S')

  4. # 获取CPU使用率
  5. CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')

  6. # 获取内存使用情况
  7. MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

  8. # 获取磁盘使用情况
  9. DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

  10. # 输出结果
  11. echo "系统监控报告 ($DATE):"
  12. echo "CPU 使用率: ${CPU_USAGE}%"
  13. echo "内存 使用率: ${MEMORY_USAGE}%"
  14. echo "磁盘 使用率: ${DISK_USAGE}%"
复制代码

hd_mail.sh(硬件:CPU、内存、硬盘,支持发送邮件)
  1. # 获取当前日期和时间
  2. DATE=$(date '+%Y-%m-%d %H:%M:%S')

  3. # 获取CPU使用率
  4. CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')

  5. # 获取内存使用情况
  6. MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')

  7. # 获取磁盘使用情况
  8. DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')

  9. # 数据格式化
  10. REPORT="系统监控报告 ($DATE):\n"
  11. REPORT+="CPU 使用率: ${CPU_USAGE}%\n"
  12. REPORT+="内存 使用率: ${MEMORY_USAGE}%\n"
  13. REPORT+="磁盘 使用率: ${DISK_USAGE}%"

  14. # 发送邮件
  15. echo -e $REPORT | mail -s "系统监控警告" [email protected]
复制代码

net.sh(网络:实时显示结果)
  1. #!/bin/bash

  2. # 监控指定网卡的上行和下行流量
  3. dev='eth0'

  4. # 检查网卡是否存在
  5. if ! ifconfig $dev &> /dev/null; then
  6.     echo "网卡设备不存在."
  7.     exit 1
  8. fi

  9. # 获取初始流量
  10. RX_pre=$(cat /proc/net/dev | grep $dev | awk '{print $2}')
  11. TX_pre=$(cat /proc/net/dev | grep $dev | awk '{print $10}')

  12. while true; do
  13.     sleep 1  # 每秒更新一次

  14.     # 获取当前流量
  15.     RX_aft=$(cat /proc/net/dev | grep $dev | awk '{print $2}')
  16.     TX_aft=$(cat /proc/net/dev | grep $dev | awk '{print $10}')

  17.     # 计算上行和下行流量
  18.     RX=$((RX_aft - RX_pre))
  19.     TX=$((TX_aft - TX_pre))

  20.     # 更新前一个值为当前值
  21.     RX_pre=$RX_aft
  22.     TX_pre=$TX_aft

  23.     # 清屏并输出结果
  24.     clear
  25.     echo -e "$(date +'%Y-%m-%d %H:%M:%S') \t 上行流量: $TX bytes/s \t 下行流量: $RX bytes/s"

  26. done
复制代码

net_30s.sh(网络:输出30次的结果)
  1. #!/bin/bash

  2. # 监控指定网卡的上行和下行流量
  3. dev='eth0'

  4. # 检查网卡是否存在
  5. if ! ifconfig $dev &> /dev/null; then
  6.     echo "网卡设备不存在."
  7.     exit 1
  8. fi

  9. # 获取初始流量
  10. RX_pre=$(cat /proc/net/dev | grep $dev | awk '{print $2}')
  11. TX_pre=$(cat /proc/net/dev | grep $dev | awk '{print $10}')

  12. count=0
  13. while [ $count -lt 30 ]; do
  14.     sleep 1  # 每秒更新一次

  15.     # 获取当前流量
  16.     RX_aft=$(cat /proc/net/dev | grep $dev | awk '{print $2}')
  17.     TX_aft=$(cat /proc/net/dev | grep $dev | awk '{print $10}')

  18.     # 计算上行和下行流量
  19.     RX=$((RX_aft - RX_pre))
  20.     TX=$((TX_aft - TX_pre))

  21.     # 更新前一个值为当前值
  22.     RX_pre=$RX_aft
  23.     TX_pre=$TX_aft

  24.     # 输出结果
  25.     echo -e "$(date +'%Y-%m-%d %H:%M:%S') \t 上行流量: $TX bytes/s \t 下行流量: $RX bytes/s"

  26.     ((count++))

  27. done
复制代码

net_30s_mail.sh(网络:输出30次的结果,支持发送邮件)
  1. #!/bin/bash

  2. # 监控指定网卡的上行和下行流量
  3. dev='eth0'

  4. # 检查网卡是否存在
  5. if ! ifconfig $dev &> /dev/null; then
  6.     echo "网卡设备不存在."
  7.     exit 1
  8. fi

  9. # 获取初始流量
  10. RX_pre=$(cat /proc/net/dev | grep $dev | awk '{print $2}')
  11. TX_pre=$(cat /proc/net/dev | grep $dev | awk '{print $10}')

  12. count=0
  13. REPORT=''
  14. while [ $count -lt 30 ]; do
  15.     sleep 1  # 每秒更新一次

  16.     # 获取当前流量
  17.     RX_aft=$(cat /proc/net/dev | grep $dev | awk '{print $2}')
  18.     TX_aft=$(cat /proc/net/dev | grep $dev | awk '{print $10}')

  19.     # 计算上行和下行流量
  20.     RX=$((RX_aft - RX_pre))
  21.     TX=$((TX_aft - TX_pre))

  22.     # 更新前一个值为当前值
  23.     RX_pre=$RX_aft
  24.     TX_pre=$TX_aft

  25.     # 数据格式化
  26.     if [ $count -lt 29 ]; then
  27.         REPORT+="$(date +'%Y-%m-%d %H:%M:%S') \t 上行流量: $TX bytes/s \t 下行流量: $RX bytes/s\n"
  28.     else
  29.         REPORT+="$(date +'%Y-%m-%d %H:%M:%S') \t 上行流量: $TX bytes/s \t 下行流量: $RX bytes/s"
  30.     fi

  31.     ((count++))

  32. done

  33. # 发送邮件
  34. echo -e $REPORT | mail -s "网络监控警告" [email protected]
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VIP会员|Archiver|小黑屋|手机版|i am Bug

GMT+8, 2026-6-5 08:01 , Processed in 0.016343 second(s), 19 queries .

Powered by Discuz!

Copyright © 2021-2026, i am Bug.

快速回复 返回顶部 返回列表