Linux服务器巡检需围绕稳定性、性能、安全、可维护性建立标准化动作,核心是规则驱动;先查硬件与系统基础状态(内核/发行版一致性、负载趋势、初始化系统),再按空间-内存-CPU-IO顺序阈值化监控。

Linux服务器巡检不是随便敲几个命令走个过场,而是要围绕稳定性、性能、安全和可维护性建立可复现、可量化、可追踪的标准化动作。核心是把“人盯”变成“规则驱动”,避免遗漏关键风险点。
硬件与系统基础状态检查
先确认底层是否健康,再谈上层服务。重点看三项:
-
系统版本与内核一致性:执行
uname -r和cat /etc/os-release,确认内核版本未降级、发行版未被意外切换(如CentOS误切为AlmaLinux但未同步配置) -
运行时间与负载趋势:用
uptime查看平均负载,结合cat /proc/loadavg对比1/5/15分钟值;若15分钟负载持续高于CPU逻辑核心数×1.5,需进一步用mpstat -P ALL 1 3看各核分布 -
启动模式与初始化系统:运行
ps -p 1 -o comm=验证是否为systemd(主流),避免因init混用导致服务管理异常;同时检查systemctl is-system-running是否返回running
资源使用率阈值化监控
所有指标必须带明确阈值,否则等于没检。按“空间-内存-CPU-IO”顺序逐层扫描:
-
磁盘空间与Inode双控:
df -h检查各挂载点使用率,超80%标红;df -i同步查Inode,尤其/var/log、/tmp等易生成小文件目录,Inode耗尽会导致新建文件失败(即使空间充足) -
内存与交换区联动判断:
free -h中看available值(非free),低于总内存20%即预警;若swap used> 0,再执行vmstat 1 5 | tail -1查si/so,非零说明正在频繁换页,需定位进程 -
CPU真实负载识别:
top默认显示含等待IO的%CPU,应改用pidstat -u 1 3查实际计算消耗;对长期 >90% 的进程,用perf top -p PID看热点函数 -
磁盘IO瓶颈定位:
iostat -xm 1 3关注%util(>70%持续告警)、await(SSD应r/s+w/s 是否突增;配合iotop -oPa找出IO大户
服务与网络连通性验证
不只看服务“在不在”,要看它“通不通、稳不稳、配得对”:
-
监听端口与业务端口映射:
ss -tuln列出所有监听端口,人工核对是否与业务文档一致(例如Web服务应监听443而非8080);对关键端口(如22、3306、6379)用nc -zv IP PORT从跳板机实测连通性 -
服务依赖与自启状态:对核心服务(如nginx、mysql),执行
systemctl list-dependencies --reverse SERVICE查谁依赖它;再用systemctl is-enabled SERVICE确认开机自启,禁用项需有书面审批记录 -
连接数与异常连接识别:
ss -s查总连接数,对比历史基线;ss -tn state TIME-WAIT | wc -l过高可能预示TIME-WAIT堆积;netstat -an | awk '$6 ~ /ESTABLISHED/ {print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -5快速揪出高频访问IP
安全与日志合规性核查
安全不是附加项,而是每次巡检的必选项:
-
账号与权限最小化:
awk -F: '$3 == 0 && $1 != "root" {print}' /etc/passwd查UID=0的非root账号;passwd -S $(cut -d: -f1 /etc/passwd | grep -v '^root$')批量检查密码状态,锁定无用账号(usermod -L username) -
SSH加固落实情况:检查
/etc/ssh/sshd_config中PermitRootLogin no、Protocol 2、MaxAuthTries 3是否生效;执行sshd -t验证配置语法,避免重启失败 -
关键日志时效性与完整性:
ls -lt /var/log/messages /var/log/secure /var/log/audit/audit.log 2>/dev/null确认最近24小时有新写入;用journalctl --disk-usage查日志占用,防/var占满;对审计日志,运行aureport -ts today | head -10快速抽检记录是否开启
标准化巡检不是堆砌命令,而是把每个检查项对应到明确的风险场景、可执行的动作、可判定的结果标准。脚本可自动化,但设计逻辑必须由人定义清楚——比如“磁盘使用率>80%”背后,是防止MySQL表空间无法扩展或rsyslog归档失败。










