server_monitor.sh 脚本,实现:

  1. 查看系统版本

  2. 查看 CPU 负载

  3. 查看内存使用

  4. 查看磁盘使用

  5. 查看 TCP 连接数

  6. 查看 Nginx、MySQL 是否在运行

  7. 输出清晰好看的报告


一、先创建脚本文件

vim /root/server_monitor.sh

二、完整监控脚本(带中文注释,方便你学)

#!/bin/bash
echo "========================================"
echo "        Linux 服务器监控报告             +"
echo " 监控时间: $(date '+%Y-%m-%d %H:%M:%S') +"
echo "========================================"

# 1. 系统基本信息
echo -e "\n【1. 系统信息】"
echo "主机名: $(hostname)"
echo "内核版本: $(uname -r)"
echo "系统版本: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"

# 2. CPU 负载
echo -e "\n【2. CPU 负载】"
echo "1/5/15分钟平均负载: $(uptime | awk '{print $8,$9,$10}')"

# 3. 内存使用
echo -e "\n【3. 内存使用】"
free -h | awk '/Mem/{print "总内存: " $2 " 已使用: " $3 " 剩余: " $4}'

# 4. 磁盘使用
echo -e "\n【4. 磁盘使用】"
df -h | grep -E '/$' | awk '{print "根分区使用率: " $5 " 总大小: " $2 " 剩余: " $4}'

# 5. 网络连接数
echo -e "\n【5. 网络状态】"
echo "TCP 连接总数: $(ss -t | wc -l)"

# 6. 服务状态监控
echo -e "\n【6. 关键服务状态】"

# 判断 nginx 是否运行
if pgrep nginx > /dev/null; then
    echo "Nginx: 运行中 ✅"
else
    echo "Nginx: 未运行 ❌"
fi

# 判断 mysql 是否运行
if pgrep mysql > /dev/null; then
    echo "MySQL: 运行中 ✅"
else
    echo "MySQL: 未运行 ❌"
fi

# 判断 php-fpm 是否运行
if pgrep php-fpm > /dev/null; then
    echo "PHP-FPM: 运行中 ✅"
else
    echo "PHP-FPM: 未运行 ❌"
fi

echo -e "\n========================================"
echo "                监控完成"
echo "========================================"

ESC,输入 :wq 保存退出。


三、给执行权限

chmod +x /root/server_monitor.sh

四、运行看效果

/root/server_monitor.sh