Linux日志分析需分阶段:先按问题类型锁定日志源(如登录异常查secure/auth.log,启动问题查messages或journalctl -b),再用tail、grep、awk等高效筛选,结合上下文验证,并通过logrotate和logger养成可持续分析习惯。
Linux日志分析不是翻文件碰运气,而是有逻辑、分阶段的排查动作。掌握核心路径和关键命令组合,5分钟内就能定位大多数常见问题。
明确目标:先锁定该看哪个日志不同问题对应不同日志源,别一上来就翻 messages:登录失败、SSH被爆破、sudo异常 → 看/var/log/secure(CentOS/RHEL)或/var/log/auth.log(Ubuntu/Debian)
系统启动卡住、服务起不来、内核报错 → 先查/var/log/messages或journalctl -b(查看本次启动日志)
网页打不开、Nginx/Apache报错 → 直奔/var/log/nginx/error.log或/var/log/apache2/error.log磁盘满、OOM杀进程、硬件异常 → 查/var/log/kern.log和dmesg(实时内核缓冲区)
定时任务没执行 → 翻/var/log/cron快速筛选:用对命令才能省时间别用 cat 打开几百万行的日志。按需选用高效方式:看最新动态:用tail -f /var/log/secure实时盯住登录尝试查某天记录:直接grep "Dec 12" /var/log/messages(注意月份缩写是英文)
抓错误关键词:
grep -i "error\|fail\|denied" /var/log/secure
统计暴力IP:
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | head -5查某时段内容(如14:00–15:00):awk '/Dec 12 14:/ || /Dec 12 15:/' /var/log/messages进阶定位:结合时间+进程+上下文单靠关键词容易误判,要带上下文验证:CentOS Linux 7.9.2009 CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
加前后几行看完整事件:
grep -C 3 "Out of memory" /var/log/messages过滤出某个服务的完整生命周期:journalctl -u nginx.service --since "2025-12-12 10:00:00"对比两个时间点差异(比如重启前后):journalctl --since "2025-12-12 09:00" --until "2025-12-12 09:10" > before.log,再导出后一段做 diff
确认进程是否真挂了:
ps aux | grep nginx配合systemctl status nginx交叉验证日常习惯:让分析更可持续临时查一次不难,难的是长期可维护:
定期清理旧日志:
logrotate配置好,避免 /var/log 塞满导致服务异常
给关键操作加标记:
logger "手动重启DB服务 - 运维张三",后续搜 “手动重启” 就能快速定位人工干预点小批量测试命令时加--dry-run或先用head -20预览格式,避免 awk 字段错位把高频命令做成 alias,比如:alias secfail='grep "Failed password" /var/log/secure | tail -20'基本上就这些。不复杂但容易忽略——关键是动手试几次,比背命令管用得多。
