当前位置: 首页 > news >正文

Linux 日志系统入门:/var/log 和 journalctl 怎么排查问题?

Linux 日志系统入门:/var/log 和 journalctl 怎么排查问题?

1. 前言

Linux 出问题时,日志是最重要的线索。

常见问题:

  • 服务启动失败;
  • SSH 登录失败;
  • Nginx 返回 502/500;
  • 程序突然退出;
  • 磁盘满了;
  • 系统被异常登录;
  • 服务器重启原因不明。

Linux 常见日志入口有两个:

/var/log journalctl

本文重点讲解如何用它们排查问题。


2. /var/log 是什么

传统 Linux 日志通常存放在:

/var/log

查看:

ls/var/log

常见日志:

路径作用
/var/log/syslog系统综合日志,Ubuntu 常见
/var/log/messages系统综合日志,CentOS/RHEL 常见
/var/log/auth.log登录认证日志,Ubuntu 常见
/var/log/secure安全认证日志,CentOS/RHEL 常见
/var/log/dmesg内核启动日志
/var/log/nginx/Nginx 日志
/var/log/mysql/MySQL 日志
/var/log/apt/apt 安装日志

不同发行版日志文件名可能不同。


3. 查看日志的基础命令

3.1 less 分页查看

less/var/log/syslog

常用按键:

按键作用
空格下一页
b上一页
/keyword搜索
n下一个匹配
q退出

3.2 tail 查看最后几行

tail-n100/var/log/syslog

实时跟踪:

tail-f/var/log/syslog

3.3 grep 搜索关键词

grep-i"error"/var/log/sysloggrep-n"failed"/var/log/sysloggrep-C3"timeout"/var/log/syslog

参数含义:

参数作用
-i忽略大小写
-n显示行号
-C 3显示上下文 3 行

4. 登录认证日志

Ubuntu/Debian:

/var/log/auth.log

CentOS/RHEL:

/var/log/secure

查看 SSH 登录失败:

grep"Failed password"/var/log/auth.log

查看登录成功:

grep"Accepted"/var/log/auth.log

CentOS/RHEL:

grep"Failed password"/var/log/securegrep"Accepted"/var/log/secure

这类日志适合排查:

  • SSH 暴力破解;
  • 登录失败;
  • sudo 使用记录;
  • 认证异常。

5. Nginx 日志

常见路径:

/var/log/nginx/access.log /var/log/nginx/error.log

实时查看访问:

tail-f/var/log/nginx/access.log

实时查看错误:

tail-f/var/log/nginx/error.log

查找 500:

grep" 500 "/var/log/nginx/access.log

查找错误:

grep-i"error"/var/log/nginx/error.log

排查 502 时,优先看:

tail-n100/var/log/nginx/error.log

常见原因:

  • 后端服务没启动;
  • upstream 地址错误;
  • 端口不通;
  • 后端超时;
  • 权限不足。

6. dmesg:查看内核日志

查看内核日志:

dmesg

查看最近日志:

dmesg|tail

实时跟踪:

dmesg-w

查找 OOM:

dmesg|grep-i"killed process"

查找磁盘错误:

dmesg|grep-i"error"

dmesg常用于排查:

  • 硬件识别;
  • USB 插拔;
  • 磁盘错误;
  • 网卡异常;
  • OOM Killer;
  • 内核报错。

7. journalctl 是什么

现代 Linux 常用 systemd 管理服务。
systemd 的日志可以通过journalctl查看。

查看全部日志:

journalctl

查看最近 100 行:

journalctl-n100

实时跟踪:

journalctl-f

8. journalctl 查看服务日志

查看某个服务:

journalctl-unginx

实时查看:

journalctl-unginx-f

最近 100 行:

journalctl-unginx-n100

查看 myapp 服务日志:

journalctl-umyapp-n100journalctl-umyapp-f

这比单纯看 nohup.out 更适合正式服务排查。


9. 按时间筛选日志

查看今天:

journalctl--sincetoday

查看最近 1 小时:

journalctl--since"1 hour ago"

指定时间段:

journalctl--since"2026-05-18 10:00:00"--until"2026-05-18 11:00:00"

查看某服务某时间段:

journalctl-umyapp--since"2026-05-18 10:00:00"--until"2026-05-18 11:00:00"

10. 按级别筛选日志

日志级别:

级别名称
0emerg
1alert
2crit
3err
4warning
5notice
6info
7debug

查看错误:

journalctl-perr

查看 warning 及以上:

journalctl-pwarning

查看某服务错误:

journalctl-umyapp-perr

11. 查看本次启动日志

当前启动周期:

journalctl-b

上一次启动:

journalctl-b-1

查看启动列表:

journalctl --list-boots

这对排查“服务器为什么重启”很有用。


12. logrotate:日志轮转

日志不能无限增长。
Linux 通常使用logrotate做日志轮转。

配置位置:

/etc/logrotate.conf /etc/logrotate.d/

查看:

ls/etc/logrotate.d/

轮转后可能出现:

access.log access.log.1 access.log.2.gz

查看压缩日志:

zcat access.log.2.gz

搜索压缩日志:

zgrep"error"access.log.2.gz

13. 常见排查流程

13.1 服务启动失败

systemctl status myapp journalctl-umyapp-n100journalctl-umyapp-f

重点搜索:

error failed permission not found address already in use

13.2 SSH 登录失败

grep"Failed password"/var/log/auth.log journalctl-ussh-n100

或:

journalctl-usshd-n100

13.3 程序突然被杀

dmesg|grep-i"killed process"journalctl-k|grep-i"killed process"

如果出现 OOM,说明内存不足。

13.4 磁盘满了

df-hdu-sh/var/log/*du-ah/var/log|sort-rh|head

不要随便rm正在写的日志文件。
可以清空:

sudotruncate-s0/var/log/large.log

14. 日志分析常用命令

统计访问 IP:

awk'{print $1}'access.log|sort|uniq-c|sort-nr|head

查找 500 错误:

grep" 500 "access.log

统计接口访问次数:

grep"/api/user"access.log|wc-l

实时查看错误:

tail-fapp.log|grep--line-buffered-i"error"

15. 小结

Linux 日志排查抓住两个入口:

/var/log:传统日志文件 journalctl:systemd 日志

常用命令:

tail-f/var/log/syslogtail-f/var/log/nginx/error.loggrep-i"error"app.log journalctl-unginx-fjournalctl-umyapp-n100journalctl--since"1 hour ago"journalctl-perrdmesg|tail

排查问题时,建议按这个顺序:

确认问题时间 找到相关服务 看 systemctl status 看 journalctl -u 服务名 看 /var/log 对应日志 搜索 error、failed、timeout、denied 结合端口、进程、磁盘、权限继续判断

掌握日志系统后,Linux 服务故障排查会从“猜问题”变成“按证据定位问题”。

http://www.cnnetsun.cn/news/2582150.html

相关文章:

  • CDR标准体系再添三件套:组网、业务、工程同步落地
  • LM2596 恒压恒流:从典型降压到可调电源的闭环设计
  • 评论观点抽取-评论抽取-评论关注点-评论分析-评论监测API接口介绍
  • AI开发工具实战:二、Superpowers 工作流——让你的 AI 编码助手开挂
  • SchoolCMS:破解中小学校教务管理数字化困境的开源企业级解决方案
  • Windows系统部署终极方案:5分钟掌握自动化安装与硬件兼容性技巧
  • stack,queue,list的区别和联系
  • 专业级AMD锐龙硬件调试:掌握SMUDebugTool实现深度性能调优
  • 快速打造专业级网页翻页动画的终极指南:StPageFlip完全解析
  • 建议收藏|AI论文写作工具2026最新测评与推荐
  • 如何快速实现低延迟游戏串流:Moonlight安卓版完整配置指南
  • 游戏社区冷启动失败率高达83%?揭秘Lovable认证级搭建标准与5个致命避坑清单
  • 别再重装系统了!手把手教你给Ubuntu双系统无损扩容(Windows磁盘管理+ext4格式化)
  • 基于时间特征层C-GAN的时序网络流量数据生成实战
  • Cats Blender插件:从模型混乱到VRChat就绪的5分钟革命
  • 终极指南:如何快速解决Windows热键冲突的完整方案
  • 别再手动调相机了!用Cinemachine Virtual Camera的Aim与Noise,5分钟打造电影感镜头
  • 2026全球人工智能OPC模式商业洞察报告
  • 告别卡顿:我是如何用Profiler给模拟器里的Unity游戏做‘深度体检’的
  • UE5 WidgetComponent鼠标交互保姆级教程:从控件蓝图到3D UI点击,手把手搞定
  • 告别枯燥Demo:用OpenCV+Unity打造你的第一个AR小游戏(从图像处理到游戏逻辑全流程)
  • 从PointA到PRB:解码NR物理层资源定位与分配的完整链路
  • Unity多语言本地化终极方案:自动翻译、字体适配与UI自适应
  • Unity+MediaPipe人体姿态驱动:逆向工程实战避坑指南
  • 如何用AI视觉助手实现桌面自动化控制:终极指南
  • RabbitMQ 发送方确认与重试机制
  • 机器学习赋能城市微出行:从需求预测到安全增强的实战解析
  • 在Node.js后端项目中集成Taotoken实现稳定AI服务
  • 量子机器学习模型评估新指标:傅里叶系数相关性(FCC)原理与应用
  • 对比直接使用原厂 API 体验 Taotoken 在接入效率上的提升