外观
系统巡检报告
约 995 字大约 3 分钟
Shell系统监控运维工具
2026-01-15
一键生成 Linux 服务器巡检报告,涵盖系统信息、CPU、内存、磁盘、网络、进程等核心指标。
功能特性
| 特性 | 说明 |
|---|---|
| 📊 全面巡检 | 覆盖系统、CPU、内存、磁盘、网络、进程等 |
| 🎨 彩色输出 | 关键指标彩色高亮,一目了然 |
| ⚠️ 阈值告警 | 超过阈值自动标红警告 |
| 📄 报告导出 | 支持导出为文本文件保存 |
快速开始
# 使用 curl 下载
curl -sL https://script.merma.cn/scripts/shell/MonitorScript/system_inspection.sh -o system_inspection.sh
# 或使用 wget 下载
wget https://script.merma.cn/scripts/shell/MonitorScript/system_inspection.sh
# 添加执行权限并运行
chmod +x system_inspection.sh && ./system_inspection.sh
# 导出报告到文件
./system_inspection.sh > report_$(date +%Y%m%d).txt演示效果
================================================================================
系统巡检报告
2026-01-15 14:30:00
================================================================================
【系统信息】
主机名称: web-server-01
操作系统: CentOS Linux 7 (Core)
内核版本: 3.10.0-1160.el7.x86_64
系统架构: x86_64
运行时间: up 45 days, 3:22
【CPU 信息】
CPU 型号: Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
CPU 核心: 4
CPU 使用率: 23.5% ✓
【内存信息】
总内存: 7.6 GB
已使用: 5.2 GB (68.4%) ✓
可用: 2.4 GB
缓存: 1.8 GB
【磁盘信息】
文件系统 大小 已用 可用 使用率 挂载点
/dev/sda1 50G 32G 18G 64% / ✓
/dev/sdb1 100G 89G 11G 89% /data ⚠ 警告
【网络信息】
eth0: 192.168.1.100
已建立连接数: 128
【TOP 10 内存占用进程】
PID 进程名 内存占用
1234 java 12.5%
5678 mysql 8.3%
...
================================================================================
巡检完成
================================================================================环境要求
- 操作系统: Linux (CentOS/Ubuntu/Debian 等)
- Shell: Bash 4.0+
- 权限: 部分信息需要 root 权限
脚本源码
点击展开查看完整源码
#!/bin/bash
#
# 系统巡检报告脚本
# 功能: 一键生成 Linux 服务器巡检报告
#
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
# 阈值配置
CPU_WARN=80
MEM_WARN=80
DISK_WARN=80
# 分隔线
print_line() {
echo "================================================================================"
}
print_section() {
echo -e "\n${BLUE}【$1】${NC}"
}
# 检查状态
check_status() {
local value=$1
local warn=$2
if [ "$value" -ge "$warn" ]; then
echo -e "${RED}⚠ 警告${NC}"
else
echo -e "${GREEN}✓${NC}"
fi
}
# 头部信息
print_header() {
print_line
echo -e " ${CYAN}系统巡检报告${NC}"
echo " $(date '+%Y-%m-%d %H:%M:%S')"
print_line
}
# 系统信息
get_system_info() {
print_section "系统信息"
echo " 主机名称: $(hostname)"
if [ -f /etc/os-release ]; then
echo " 操作系统: $(grep PRETTY_NAME /etc/os-release | cut -d'"' -f2)"
elif [ -f /etc/redhat-release ]; then
echo " 操作系统: $(cat /etc/redhat-release)"
fi
echo " 内核版本: $(uname -r)"
echo " 系统架构: $(uname -m)"
echo " 运行时间: $(uptime -p 2>/dev/null || uptime | awk -F',' '{print $1}' | awk -F'up' '{print $2}')"
}
# CPU 信息
get_cpu_info() {
print_section "CPU 信息"
local cpu_model=$(grep "model name" /proc/cpuinfo | head -1 | cut -d':' -f2 | sed 's/^ //')
local cpu_cores=$(grep -c "processor" /proc/cpuinfo)
local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8}' | cut -d'.' -f1)
echo " CPU 型号: $cpu_model"
echo " CPU 核心: $cpu_cores"
echo -n " CPU 使用率: ${cpu_usage}% "
check_status "$cpu_usage" "$CPU_WARN"
}
# 内存信息
get_memory_info() {
print_section "内存信息"
local mem_info=$(free -h | grep "Mem:")
local total=$(echo "$mem_info" | awk '{print $2}')
local used=$(echo "$mem_info" | awk '{print $3}')
local available=$(echo "$mem_info" | awk '{print $7}')
local cache=$(echo "$mem_info" | awk '{print $6}')
local mem_usage=$(free | grep "Mem:" | awk '{printf "%.0f", $3/$2*100}')
echo " 总内存: $total"
echo -n " 已使用: $used (${mem_usage}%) "
check_status "$mem_usage" "$MEM_WARN"
echo " 可用: $available"
echo " 缓存: $cache"
}
# 磁盘信息
get_disk_info() {
print_section "磁盘信息"
echo " 文件系统 大小 已用 可用 使用率 挂载点"
df -h | grep -E "^/dev/" | while read line; do
local fs=$(echo "$line" | awk '{print $1}')
local size=$(echo "$line" | awk '{print $2}')
local used=$(echo "$line" | awk '{print $3}')
local avail=$(echo "$line" | awk '{print $4}')
local usage=$(echo "$line" | awk '{print $5}' | tr -d '%')
local mount=$(echo "$line" | awk '{print $6}')
printf " %-20s %6s %6s %6s %5s%% %-10s " "$fs" "$size" "$used" "$avail" "$usage" "$mount"
check_status "$usage" "$DISK_WARN"
done
}
# 网络信息
get_network_info() {
print_section "网络信息"
# 获取 IP 地址
ip addr | grep "inet " | grep -v "127.0.0.1" | while read line; do
local iface=$(echo "$line" | awk '{print $NF}')
local ip=$(echo "$line" | awk '{print $2}' | cut -d'/' -f1)
echo " $iface: $ip"
done
# 连接数
local conn=$(ss -ant | grep -c ESTAB 2>/dev/null || netstat -ant | grep -c ESTABLISHED)
echo " 已建立连接数: $conn"
}
# TOP 进程
get_top_processes() {
print_section "TOP 10 内存占用进程"
echo " PID 进程名 内存占用"
ps aux --sort=-%mem | head -11 | tail -10 | awk '{printf " %-6s %-16s %s%%\n", $2, $11, $4}'
}
# 尾部信息
print_footer() {
echo ""
print_line
echo -e " ${GREEN}巡检完成${NC}"
print_line
}
# 主函数
main() {
print_header
get_system_info
get_cpu_info
get_memory_info
get_disk_info
get_network_info
get_top_processes
print_footer
}
main