Linux 日志查看:journalctl 与 /var/log 一次讲清
日志在哪:先分清两套东西
Linux 上查问题,第一步是找日志。日志分两套:传统文本日志在 /var/log 目录下,systemd 接管的日志由 journalctl 统一管理。新系统两者并存,知道去哪找,等于问题解决了一半。
/var/log 里最常用的几个文件
syslog(或 messages)是系统总日志,大多数服务的信息都往这里写;auth.log 记录登录、sudo、SSH 相关事件,查“谁登过、谁提权失败”就看它;kern.log 只记内核消息;dmesg 看的是开机以来的内核环形缓冲,硬件、驱动问题先看它。还有各服务的专属日志,比如 Nginx 的 access.log 与 error.log,都在各自目录下。
看文本日志最顺手的还是老三样:tail -f /var/log/syslog 实时跟随,grep -i error /var/log/syslog 过滤关键字,less 翻页慢慢看。日志文件会被 logrotate 定期切割压缩,旧日志变成 .gz,用 zgrep 直接查,不用先解压。
journalctl:systemd 时代的主力
用 systemd 的发行版,服务的输出默认进了 journal,不再单独写文件。最常用的几条命令要记熟:journalctl -u nginx 只看某个服务的日志;journalctl -f 实时跟随,和 tail -f 一个意思;journalctl --since "2026-11-11 08:00" --until "2026-11-11 09:00" 按时间段过滤;journalctl -p err 只看错误级别以上,噪音立刻少一大半;journalctl -b 只看本次开机以来的日志,排查启动失败最方便。
journal 日志默认存在内存里,重启就丢。想持久化,建一个目录就行:mkdir -p /var/log/journal,然后重启 systemd-journald,日志就会落盘,重启后也能查。磁盘占用可以用 journalctl --disk-usage 看,journalctl --vacuum-size=500M 一键清理到指定大小。
排障时的固定套路
服务起不来,先 systemctl status xxx 看一眼,再 journalctl -u xxx -n 50 看最后 50 行,九成问题出在配置写错或端口被占。磁盘满了,先 du -sh /var/log/* 看哪个日志在疯长,再决定清还是修。登录异常,先 grep "Failed password" /var/log/auth.log 看暴力破解的痕迹。
一句话:日志不是出了事才想起的东西,平时就养成 tail -f 和 journalctl -f 随手看的习惯,出问题时你比别人快十分钟。
- 点赞
- 收藏
- 关注作者
评论(0)