Linux日志排查故障的完整步骤,零基础也能上手

前置准备


在进行Linux日志排查故障之前,请先确认以下环境条件:



  • 已通过SSH登录服务器,具有普通用户权限(部分命令需要sudo)。

  • 了解服务器操作系统版本(CentOS/RHEL使用rsyslog,Ubuntu/Debian使用systemd-journald)。

  • 常用日志目录:/var/log/。

  • 熟悉三个基本命令:tail(查看文件末尾)、grep(搜索文本)、less(分页阅读)。


注意事项:



  • 日志文件通常需要root或adm组权限才能读取,建议使用sudo执行。

  • 生产环境避免在高峰时段执行大量日志搜索,以免IO过高。


分步操作:从系统到服务排查故障


第一步:查看系统整体运行状态


首先检查系统日志中是否有明显错误。

不同发行版的系统日志文件名不同:



  • CentOS/RHEL 7+:/var/log/messages

  • Ubuntu/Debian:/var/log/syslog

  • 现代系统也可使用 journalctl 统一查看


示例命令:


# 查看最后100行系统日志(CentOS)
sudo tail -n 100 /var/log/messages

实时监控日志输出(按 Ctrl+C 停止)

sudo tail -f /var/log/syslog


关注关键词:error、failed、timeout、panic、out of memory 等。


第二步:按时间范围缩小排查区间


故障通常发生在某个时间段。

使用grep结合时间戳过滤:


# 查看今天早上8点到9点之间的日志(以messages为例)
sudo grep '2025-04-01T08:' /var/log/messages

使用journalctl按时间过滤(更推荐)

sudo journalctl --since '2025-04-01 08:00' --until '2025-04-01 09:00'


第三步:定位具体服务或进程日志


系统日志不够详细时,排查对应服务的独立日志。

常见服务日志路径:



  • Nginx:/var/log/nginx/error.log

  • MySQL:/var/log/mysql/error.log

  • SSH:/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS)

  • 自定义应用:通常配置在应用目录下的logs/或/var/log/app/


# 查看Nginx最近20条错误
sudo tail -20 /var/log/nginx/error.log

搜索SSH认证失败的IP

sudo grep 'Failed password' /var/log/auth.log


第四步:使用组合命令快速定位


对于复杂故障,将grep、awk、sort、uniq结合使用。

例如统计某个IP的访问错误次数:


sudo grep 'Failed password' /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

也可直接用less打开大日志文件,按/键搜索关键词(/error 回车),按 n 跳到下一个匹配。


避坑指南



  • 日志被轮转覆盖:日志文件可能被logrotate压缩为.gz,需用zcat或zgrep读取。示例:zgrep 'error' /var/log/messages-20250401.gz。

  • 权限不足:遇到 Permission denied,记得加sudo。

  • grep大小写:默认区分大小写,使用 grep -i 忽略大小写。

  • tail -f 占用终端:退出时按 Ctrl+C,不要直接关闭SSH,会导致后台进程残留。

  • journalctl日志太多:加上 -n 50 限制行数,或 --no-pager 避免分页卡住。


高频问题解答


问题1:日志里出现“Out of memory: Kill process”怎么办?

这表示系统内存不足触发了OOM Killer。解决方法:增加物理内存或优化应用内存使用;检查是否有进程内存泄漏,可用top或free -m实时监控。


问题2:为什么我用grep搜索不到关键字?

确认日志文件路径是否正确;检查日志是否被轮转;尝试使用zgrep搜索.gz文件;或者使用journalctl -u 服务名查看特定服务的日志。


问题3:日志文件太大,打开非常慢,有什么好办法?

不要用cat或直接vi打开大文件。推荐tail -n 1000或less分页查看;如果必须全量搜索,用grep只输出匹配行,必要时配合-m 50限制输出行数。


效果验证


完成排查后,通过以下方式确认故障已被解决:



  • 再次执行 sudo tail -n 20 /var/log/messages 或对应的服务日志,观察是否还有新的错误产生。

  • 对于服务故障,尝试重启服务并访问功能,同时 tail -f 实时日志,确认错误不再出现。

  • 使用 echo $? 检查上一个命令(如systemctl restart nginx)的返回值,0表示成功。


示例检查命令:


# 检查Nginx状态
sudo systemctl status nginx

检查系统总体日志是否有新错误(近5分钟)

sudo journalctl --since '5 min ago' | grep -i error | tail -10


如果以上步骤执行后,不再出现相关报错,业务访问正常,则说明日志排查及修复工作完成。

遇到新问题请按本文方法重新介入排查即可。

分享到:
上一篇
WordPress多站点配置从零开始,这一篇就够了
下一篇
Docker端口映射外网访问:小白也能懂:用Docker端口
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意