宋子宪博客

Linux 系统服务器监控脚本教程

前提条件

脚本功能

安装步骤

  1. 创建脚本文件
    打开文本编辑器,创建一个新文件,比如命名为 monitoring.sh
  2. 复制并粘贴脚本
    将以下脚本内容复制并粘贴到刚创建的文件中:

    #!/bin/bash
    
    # 获取服务器基本信息
    hostname=$(hostname)
    ip_address=$(hostname -I | awk '{print $1}')
    os=$(lsb_release -ds || echo "lsb_release command not found")
    kernel=$(uname -r)
    uptime=$(uptime -p)
    
    # 获取CPU使用率的函数
    get_cpu_usage() {
        # 从/proc/stat读取cpu时间片信息
        read -r cpu user nice system idle iowait irq softirq steal guest < /proc/stat
        total1=$((user+system+nice+idle+iowait+irq+softirq+steal))
        idle1=$idle
    
        sleep 1  # 等待一秒钟
    
        # 再次读取cpu时间片信息
        read -r cpu user nice system idle iowait irq softirq steal guest < /proc/stat
        total2=$((user+system+nice+idle+iowait+irq+softirq+steal))
        idle2=$idle
    
        # 计算CPU使用率
        total=$((total2-total1))
        idle=$((idle2-idle1))
        cpu_usage=$((100*(total-idle)/total))
    }
    
    # 检查依赖的命令
    for cmd in awk df free lsb_release uname; do
        if ! command -v $cmd &> /dev/null; then
            echo "Command not found: $cmd"
            exit 1
        fi
    done
    
    # 监控循环
    while true; do
        get_cpu_usage  # 调用函数获取CPU使用率
    
        # 获取CPU型号和核心数
        cpu_model=$(awk -F': ' '/model name/{print $2; exit}' /proc/cpuinfo)
        cpu_cores=$(grep -c "model name" /proc/cpuinfo)
    
        # 获取内存信息
        memory_info=$(free -h)
        read -r memory_total memory_used memory_free memory_shared memory_buffers memory_available <<<$(echo "$memory_info" | awk 'NR==2{print $2,$3,$4,$5,$6,$7}')
    
        # 获取磁盘使用情况
        read -r disk_total disk_used disk_free <<<$(df -h --output=size,used,avail / | awk 'NR==2{print $1,$2,$3}')
    
        # 清除屏幕并输出信息
        clear
        printf -- "服务器信息:\n"
        printf -- "--------------------------------------\n"
        printf -- "主机名: %-20s\n" "$hostname"
        printf -- "IP地址: %-20s\n" "$ip_address"
        printf -- "操作系统: %-20s\n" "$os"
        printf -- "内核版本: %-20s\n" "$kernel"
        printf -- "运行时间: %-20s\n" "$uptime"
        printf -- "--------------------------------------\n"
        printf -- "CPU信息:\n"
        printf -- "型号: %-20s\n" "$cpu_model"
        printf -- "核心数: %-20s\n" "$cpu_cores"
        printf -- "CPU使用率: %s%%\n" "$cpu_usage"
        printf -- "--------------------------------------\n"
        printf -- "内存信息:\n"
        printf -- "总量: %-20s\n" "$memory_total"
        printf -- "已使用: %-20s\n" "$memory_used"
        printf -- "空闲: %-20s\n" "$memory_free"
        printf -- "共享: %-20s\n" "$memory_shared"
        printf -- "缓冲/缓存: %-20s\n" "$memory_buffers"
        printf -- "可用: %-20s\n" "$memory_available"
        printf -- "--------------------------------------\n"
        printf -- "磁盘信息:\n"
        printf -- "总量: %-20s\n" "$disk_total"
        printf -- "已使用: %-20s\n" "$disk_used"
        printf -- "可用: %-20s\n" "$disk_free"
        printf -- "--------------------------------------\n"
    
        # 每 3 秒刷新一次
        sleep 3
    done
  3. 保存并关闭文件
    ps:如果你是linux创建,则忽略这里,如果是windows创建再上传到linux,可能会报-bash: ./monitoring.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录,那么你执行sed -i 's/\r$//' /usr/local/monitoring.sh命令即可,脚本所在目录替换成实际目录
  4. 给脚本执行权限
    在终端中,运行以下命令:

    chmod +x monitoring.sh
  5. 运行脚本
    在终端中,执行以下命令以启动监控:

    ./monitoring.sh

显示如图:

如果在运行脚本时出现 "Command not found: lsb_release" 错误,这意味着您的系统中没有安装 lsb_release 命令。在大多数Linux发行版中,lsb_release 是用于查看Linux发行版信息的命令。为了解决这个问题,您可以尝试以下步骤:

  1. 检查 lsb_release 命令是否确实不存在。您可以手动在命令行中运行 lsb_release -a 来确认。
  2. 如果 lsb_release 真的不存在,您可以尝试安装它,具体命令取决于您使用的Linux发行版。以下是一些常见发行版的安装命令示例:

    • 对于Debian/Ubuntu发行版,可以运行:

      sudo apt-get install lsb-release
    • 对于Red Hat/CentOS发行版,可以运行:

      sudo yum install redhat-lsb-core
    • 对于其他发行版,您可以查看其包管理器的文档以了解如何安装 lsb-release
  3. 如果您无法安装 lsb_release 或者不想使用它,您可以考虑手动设置您的系统信息,以便脚本可以继续运行。您可以编辑脚本,手动设置变量 os 为您的Linux发行版名称,例如:

    os="Your Linux Distribution"

使用说明

注意事项

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »