Linux 日志查看入门:journalctl 与 /var/log
服务器出问题时,第一反应不应该是重启,而是先看日志。日志会告诉你服务是什么时候停的、为什么停的、以及停之前最后做了什么。本文介绍 Linux 上最常用的两条日志查看路线:systemd 的 journalctl,以及传统的 /var/log 文本日志。
一、先分清两类日志
使用 systemd 的系统(现在大多数发行版,如 Ubuntu、Debian、CentOS 7 及之后版本都是)会把系统服务、内核和应用输出统一收进 journal,由 journald 管理,用 journalctl 查看。
与此同时,很多程序仍会把日志写成普通文本文件,放在 /var/log 下面,例如 /var/log/messages、/var/log/syslog、/var/log/nginx/error.log、/var/log/mysql/error.log 等。
一个实用的判断方法是:先用 journalctl 查服务,再去 /var/log 查该程序自己的文件,两边对照,基本不会漏掉关键信息。
二、journalctl:按服务、按时间查
查看某个服务的全部日志:
journalctl -u nginx
只看最近的 100 行,并持续跟随新日志(类似 tail -f):
journalctl -u nginx -n 100 -f
只看今天、只看某个时间段的日志:
journalctl --since today
journalctl --since "2026-10-28 08:00" --until "2026-10-28 09:00"
只看报错级别以上的日志,快速定位故障:
journalctl -p err -u nginx
journalctl -p err --since "1 hour ago"
查看上一次启动(重启前)的日志,这对排查“重启后问题消失、但原因不明”的情况特别有用:
journalctl -b -1 -p err
注意:journalctl 默认输出可能经过分页,直接在终端里按 q 退出;如果想一次性输出给脚本处理,可以加 --no-pager。
三、/var/log:直接看文本文件
先列出目录,确认有哪些日志文件:
ls -lh /var/log
看文件尾部最新内容,服务刚出问题时最常用:
tail -n 100 /var/log/messages
tail -f /var/log/nginx/error.log
在文件里搜索关键词,例如 error、failed、denied、timeout:
grep -i "error" /var/log/messages | tail -n 50
grep -i "failed" /var/log/nginx/error.log | tail -n 50
日志文件会被轮转(logrotate),旧日志常以 .gz 结尾,例如 messages-20261027.gz,查看时用 zcat 或 zgrep:
zcat /var/log/messages-20261027.gz | grep -i error | tail -n 50
四、一个真实的排查顺序
假设网站突然打不开,服务状态显示 nginx 正常,但页面返回 502,可以按这个顺序走:
- 先看 nginx 自身的错误日志,确认是不是上游不通:
tail -n 100 /var/log/nginx/error.log
- 再看上游应用(例如后端服务)的 journal 日志,确认它是否崩溃、端口是否被占用:
journalctl -u myapp -n 100 --no-pager
- 如果怀疑是系统层面问题,再看内核与系统日志:
journalctl -k -p err --since "30 min ago"
dmesg | tail -n 50
- 把时间点对齐:先记下故障发生的大致时间,再用 --since 和 --until 把三处日志限定在同一时间窗口,避免被无关旧日志带偏。
五、新手常踩的坑
第一,只看最后一行。很多错误的前因在几十行之前,例如配置加载失败、依赖服务先挂了,最后一行只是结果。
第二,只看一种日志。journalctl 里没有,不代表程序没记日志;反过来,/var/log 里没有,也可能是程序只输出到了 journal。
第三,忽略权限。普通用户可能看不到全部 journal 或某些系统日志,必要时用 sudo 查看,但不要把日志文件权限改成所有人可读。
第四,日志量太大时不加过滤。直接 journalctl 或 cat 大文件会刷屏,先用 -n、-p、–since 和 grep 缩小范围。
六、总结
日常运维记住两条路线就够了:查服务用 journalctl -u 服务名,查程序文件用 tail 和 grep 看 /var/log 下对应的日志。先定时间窗口,再按级别过滤,最后把服务日志、程序日志和系统日志的时间点对齐,多数“服务突然不可用”的问题都能在日志里找到第一条线索。
- 点赞
- 收藏
- 关注作者
评论(0)