下面给你一套企业级「Linux一键巡检 + 自动诊断脚本」,已经按生产可用标准设计(SRE思维),支持:
✅ CPU / 内存 / 磁盘 / IO / 网络✅ Top进程定位✅ OOM / 异常检测✅ 自动给出“诊断结论”✅ 可直接用于巡检 / 故障排查 / 面试展示
#!/bin/bash# ==========================================# Linux 一键巡检 + 自动诊断脚本(企业级)# Author: SRE# ==========================================echo "=========================================="echo " Linux 系统巡检报告 $(date)"echo "=========================================="# ---------- 基础信息 ----------echo -e "\n[1] 系统基本信息"hostnameuptime# ---------- CPU ----------echo -e "\n[2] CPU 使用情况"top -bn1 | grep "Cpu(s)"load=$(uptime | awk -F'load average:' '{print $2}')echo "Load:$load"# 自动诊断 CPUcpu_idle=$(top -bn1 | grep "Cpu(s)" | awk '{print $8}' | cut -d. -f1)if [ "$cpu_idle" -lt 20 ]; then echo "⚠️ CPU 使用率过高" echo "Top 5 CPU 进程:" ps -eo pid,comm,%cpu --sort=-%cpu | head -n 6fi# ---------- 内存 ----------echo -e "\n[3] 内存使用情况"free -mmem_used=$(free | awk '/Mem/ {printf("%.0f"), $3/$2*100}')if [ "$mem_used" -gt 80 ]; then echo "⚠️ 内存使用率过高: ${mem_used}%" ps -eo pid,comm,%mem --sort=-%mem | head -n 6fi# ---------- OOM 检查 ----------echo -e "\n[4] OOM 检查"dmesg | grep -i "killed process" | tail -n 3# ---------- 磁盘 ----------echo -e "\n[5] 磁盘使用情况"df -hdisk_warn=$(df -h | awk '$5+0 > 80 {print $0}')if [ ! -z "$disk_warn" ]; then echo "⚠️ 磁盘使用率超过80%" echo "$disk_warn"fi# ---------- IO ----------echo -e "\n[6] IO 性能"iostat -x 1 1 | grep -E "Device|sd|vd"# ---------- 网络 ----------echo -e "\n[7] 网络连接数"ss -secho -e "\nTop 连接IP:"ss -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head# ---------- 进程异常 ----------echo -e "\n[8] 异常进程检测"# 僵尸进程zombie=$(ps -eo stat | grep -c Z)if [ "$zombie" -gt 0 ]; then echo "⚠️ 存在僵尸进程: $zombie"fi# 高负载诊断load1=$(uptime | awk -F'load average:' '{print $2}' | cut -d, -f1 | awk '{print int($1)}')cpu_core=$(nproc)if [ "$load1" -gt "$cpu_core" ]; then echo "⚠️ 系统负载过高 (Load > CPU核数)"fi# ---------- 大文件 ----------echo -e "\n[9] 大文件检查"find /var -type f -size +100M 2>/dev/null | head# ---------- 自动诊断总结 ----------echo -e "\n=========================================="echo " 自动诊断总结"echo "=========================================="if [ "$cpu_idle" -lt 20 ]; then echo "👉 CPU瓶颈:建议排查高CPU进程(top/perf)"fiif [ "$mem_used" -gt 80 ]; then echo "👉 内存瓶颈:建议排查内存泄漏或扩容"fiif [ ! -z "$disk_warn" ]; then echo "👉 磁盘瓶颈:建议清理日志或扩容"fiif [ "$load1" -gt "$cpu_core" ]; then echo "👉 高负载:可能存在CPU争抢或IO阻塞"fiecho "巡检完成"
🧠 二、脚本亮点(面试可讲)
你可以这样介绍这套脚本👇
✅ 1. 自动诊断能力(核心加分)
👉 不是“采集数据”,而是“直接给结论”
✅ 2. 覆盖生产关键指标
✅ 3. SRE思维(重点)
👉 从“监控”升级到“诊断”:
🔥 三、企业级进阶版本(建议你升级)
如果你要真正写进简历 / 架构师级别,建议再加👇
✅ 1. 日志输出
LOG_FILE="/var/log/system_check.log"exec > >(tee -a$LOG_FILE) 2>&1
✅ 2. 告警推送(企业必备)
对接:
✅ 3. 自动化处理(高级SRE)
✅ 4. 定时巡检
crontab -e */10 * * * * /opt/check.sh
💣 四、面试王炸说法(建议背)
你可以这样说👇
我在生产中实现了一套 Linux 一键巡检脚本,不只是采集CPU、内存、磁盘指标,而是具备自动诊断能力,比如能识别CPU瓶颈、内存泄漏、IO阻塞等问题,并给出处理建议,同时支持定时巡检和告警推送,提升了运维效率和故障响应速度。
🚀 五、如果你想再升一个档次
我可以帮你做👇(非常适合你当前背景):
🔥 1. eBPF 自动诊断版(高级SRE)
🔥 2. Prometheus + 自动修复体系
🔥 3. Kubernetes 版本巡检脚本
如果你说一句:👉 “给我企业最终版(带告警+自动修复)”