linux巡检需分层验证:先系统基础(内核、启动、时间),再资源使用(磁盘、内存、cpu、io),接着服务安全(端口、自启、基线),最后日志变更(时效性、关键文件修改),全程须有阈值、可复现、留痕迹。

Linux系统日常巡检不是堆砌命令,而是按逻辑顺序分层验证:先保底(硬件与系统基础),再查资源(空间→内存→CPU→IO),最后验服务与安全。关键在每项有明确阈值、可复现、留痕迹。
一、系统基础状态必须确认
这是所有检查的前提,出错会导致后续判断失真:
-
内核与发行版一致性:运行
uname -r和cat /etc/os-release,确认内核未意外降级、发行版标识未被篡改(如 CentOS Stream 9 环境里出现 AlmaLinux 字样需排查) -
启动模式与运行态:用
ps -p 1 -o comm=验证 init 系统是 systemd;再执行systemctl is-system-running,输出必须为running,否则说明系统未完全就绪 -
时间同步状态:执行
timedatectl status | grep "System clock synchronized",结果应为yes;若否,检查 NTP 服务是否启用并连通上游时间源
二、资源使用率要双指标+阈值驱动
只看百分比不够,必须结合绝对值和趋势,且空间、内存、CPU、IO 按顺序逐层下钻:
-
磁盘空间与 Inode 并查:用
df -h查使用率 ≥85% 的挂载点;同时用df -i查/var/log、/tmp等目录,Inode 使用率 >95% 同样危险(小文件写满但空间仍有余) -
内存看 available,不看 free:运行
free -h,重点读取available列;若低于总内存 20%,即预警;若swap used> 0,再跑vmstat 1 5 | tail -1看si/so是否非零,确认是否频繁换页 -
CPU 负载看 15 分钟均值:用
uptime或cat /proc/loadavg,对比 15 分钟负载值与逻辑 CPU 核数 ×1.5;超阈值后,用pidstat -u 1 3定位真实消耗进程,而非 top 默认的含 IO 等待值 -
IO 瓶颈看 %util + await:执行
iostat -xm 1 3,若某设备%util > 70%且await > 10ms(SSD)或 >30ms(HDD),再配合iotop -oPa找出 IO 大户
三、服务与安全状态要“通、稳、配得对”
不能只查进程是否存在,要验证它是否真正可用、配置是否合规、权限是否收敛:
-
端口监听与实测连通性分离验证:先用
ss -tuln确认关键端口(如 22、443、3306)在监听;再从跳板机执行nc -zv IP PORT实测可达性,避免防火墙放行但服务未响应 -
服务自启与依赖链显式检查:对 nginx、mysql 等核心服务,运行
systemctl is-enabled SERVICE确认启用;再用systemctl list-dependencies --reverse SERVICE查谁依赖它,防止误停引发连锁故障 -
安全基线快速过筛:检查
sestatus状态是否为 enforcing;运行firewall-cmd --state确认防火墙开启;用lastb | head -5查最近失败登录;用awk -F: '$2=="" {print $1}' /etc/shadow扫描空密码账户
四、日志与变更要有时效性抓取
问题往往藏在“最近”而非“全部”,聚焦窗口期能提升效率:
-
错误日志限定时间窗:用
journalctl --since "2 hours ago" | grep -i "error\|failed\|oom\|denied",避免翻全量日志;对传统日志(如 /var/log/messages),用tail -n 200 | grep ... -
用户与计划任务变更即时感知:检查
last -n 10中非工作时间 root 登录;用crontab -l | grep -v "^#" | wc -l统计有效任务数,与基线比对是否突增 -
关键文件修改时间标记:对
/etc/passwd、/etc/shadow、/etc/ssh/sshd_config等,执行stat -c "%y %n" /etc/passwd,记录最后修改时间,异常更新需人工复核
流程走完不是终点,每次巡检结果必须落盘为带时间戳的文本或 JSON,至少保留 7 天。告警不靠人盯,而是用简单脚本每天扫描日志中 “9[0-9]%”、“DOWN”、“ERROR” 等关键词,触发邮件通知。不复杂但容易忽略。










