2026年01月20日/ 浏览 11

凌晨三点被报警短信吵醒的运维人都懂——系统不会在你上班时间出故障。当服务器突然抽风,那些临时手敲的检查命令就像用勺子舀干大海,而真正的老司机早就准备好了自动化巡检武器库。
打开终端输入命令谁都会,但连续三天重复同样的检查流程呢?人类会漏看红色报警信息,脚本永远不会。某次磁盘爆满事故后,我亲眼见过运维总监当着全团队的面,把手工检查文档撕得粉碎——纸片在空中飘落的弧线,就是传统巡检方式的葬礼。
用vim写出的几十行代码,能比年薪百万的专家更早发现隐患。这不是魔法,而是把df -h、free -m、netstat -tulnp这些基础命令变成永不疲倦的电子哨兵。当你的脚本开始定期输出彩色标记的报表,连CEO都会在周会上引用这些数据——虽然他可能以为这是某种黑科技AI。
别被"企业级"吓到,最实用的巡检脚本往往简单得令人发指。新建一个check.sh文件,塞进这些核心模块:
系统负载三剑客
echo -e "\033[31m====== CPU负载 ======\033[0m" uptime | awk {print "最近1/5/15分钟平均负载:",$10,$11,$12} top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk {print "CPU空闲率:",100-$1"%"}内存检查的暴力美学
echo -e "\n\033[32m====== 内存使用 ======\033[0m" free -m | grep Mem | awk {printf "总内存:%dMB 已用:%dMB 使用率:%.2f%\n",$2,$3,$3/$2*100}加上定时任务配置crontab -e,让脚本每天凌晨悄悄执行:
0 3 * * * /root/check.sh | mail -s "每日巡检报告" admin@company.com见过太多"理论上完美"的脚本在实际环境翻车。某次/tmp目录被占满导致业务崩溃后,我现在的脚本会特别检查这个狡猾的陷阱:
df /tmp | awk NR==2 {if($5 > 90) print "\033[31m警告: /tmp使用率"$5"\033[0m"}
更阴险的是**僵尸进程**——它们像吸血鬼一样慢慢吸干系统资源。这个组合拳能揪出这些幽灵: ```bash ps -A -ostat,ppid | grep -e ^[Zz] | awk {print "僵尸进程PPID:",$2}上周脚本突然发邮件报警"某台机器SYN队列溢出",而监控系统毫无反应。后来发现是
内核参数
net.ipv4.tcp_max_syn_backlog设置过小 ,这个连资深架构师都容易忽略的细节,被几行Bash代码拯救了:netstat -s | grep -i "SYNs to LISTEN" | awk {if($1 > 1000) print "SYN洪水攻击风险!"}现在我的脚本已经进化到会检查证书过期时间、数据库连接池状态甚至容器健康度。每次看到它比商业监控软件更早发现问题时,都会想起那个运维真理:最强大的工具往往就藏在你的终端里。
小贴士:给脚本添加#!/bin/bash -x参数,运行时每个命令都会打印出来——就像给巡检过程装上行车记录仪【】