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 -n 100 /var/log/syslog
实时跟踪:
tail -f /var/log/syslog
3.3 grep 搜索关键词
grep -i "error" /var/log/syslog
grep -n "failed" /var/log/syslog
grep -C 3 "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/secure
grep "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 -n 100 /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 -n 100
实时跟踪:
journalctl -f
8. journalctl 查看服务日志
查看某个服务:
journalctl -u nginx
实时查看:
journalctl -u nginx -f
最近 100 行:
journalctl -u nginx -n 100
查看 myapp 服务日志:
journalctl -u myapp -n 100
journalctl -u myapp -f
这比单纯看 nohup.out 更适合正式服务排查。
9. 按时间筛选日志
查看今天:
journalctl --since today
查看最近 1 小时:
journalctl --since "1 hour ago"
指定时间段:
journalctl --since "2026-05-18 10:00:00" --until "2026-05-18 11:00:00"
查看某服务某时间段:
journalctl -u myapp --since "2026-05-18 10:00:00" --until "2026-05-18 11:00:00"
10. 按级别筛选日志
日志级别:
| 级别 | 名称 |
|---|---|
| 0 | emerg |
| 1 | alert |
| 2 | crit |
| 3 | err |
| 4 | warning |
| 5 | notice |
| 6 | info |
| 7 | debug |
查看错误:
journalctl -p err
查看 warning 及以上:
journalctl -p warning
查看某服务错误:
journalctl -u myapp -p err
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 -u myapp -n 100
journalctl -u myapp -f
重点搜索:
error
failed
permission
not found
address already in use
13.2 SSH 登录失败
grep "Failed password" /var/log/auth.log
journalctl -u ssh -n 100
或:
journalctl -u sshd -n 100
13.3 程序突然被杀
dmesg | grep -i "killed process"
journalctl -k | grep -i "killed process"
如果出现 OOM,说明内存不足。
13.4 磁盘满了
df -h
du -sh /var/log/*
du -ah /var/log | sort -rh | head
不要随便 rm 正在写的日志文件。
可以清空:
sudo truncate -s 0 /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 -f app.log | grep --line-buffered -i "error"
15. 小结
Linux 日志排查抓住两个入口:
/var/log:传统日志文件
journalctl:systemd 日志
常用命令:
tail -f /var/log/syslog
tail -f /var/log/nginx/error.log
grep -i "error" app.log
journalctl -u nginx -f
journalctl -u myapp -n 100
journalctl --since "1 hour ago"
journalctl -p err
dmesg | tail
排查问题时,建议按这个顺序:
确认问题时间
找到相关服务
看 systemctl status
看 journalctl -u 服务名
看 /var/log 对应日志
搜索 error、failed、timeout、denied
结合端口、进程、磁盘、权限继续判断
掌握日志系统后,Linux 服务故障排查会从“猜问题”变成“按证据定位问题”。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)