服务器出问题时,日志往往比猜测更可靠。网站打不开、服务启动失败、系统异常重启,背后通常都会留下日志记录。Ubuntu 中的 journalctl 可以查看 systemd 管理的系统日志和服务日志,本篇教程重点讲解如何用 journalctl 找到错误原因,而不是盲目重启服务。
一、为什么要学会看 journalctl
服务器出问题时,日志通常比猜测更可靠。网站打不开、服务启动失败、定时任务异常、系统重启,都可能在日志里留下线索。
Ubuntu 使用 systemd 的环境中,journalctl 是查看系统日志和服务日志的重要工具。它能帮助站长快速定位某个服务为什么失败、什么时候重启、最近出现了哪些错误。
如果只看面板提示或浏览器报错,往往只能看到表面现象。真正原因通常还要回到服务器日志里查。
二、查看系统日志的基础命令
查看全部日志:
journalctl
查看最近日志:
journalctl -n 50
实时查看日志:
journalctl -f
-n 50 表示查看最近 50 行,-f 表示持续跟踪新日志。排查正在发生的问题时,实时日志很有用。
可以按时间筛选:
journalctl --since "2026-07-01 10:00:00"
也可以查看最近一小时:
journalctl --since "1 hour ago"
按时间筛选能减少干扰,尤其适合排查刚刚发生的故障。
三、查看某个服务的日志
如果要查看 Nginx 日志:
journalctl -u nginx
查看最近 100 行:
journalctl -u nginx -n 100
实时跟踪某个服务:
journalctl -u nginx -f
服务名称要以服务器实际安装为准。比如 SSH 服务在不同环境中可能显示为 ssh 或其他名称。
四、服务启动失败时怎么用日志定位
服务启动失败时,可以先执行:
systemctl status 服务名
再执行:
journalctl -u 服务名 -n 100
常见日志线索包括:
- 配置文件语法错误;
- 端口已经被占用;
- 文件或目录不存在;
- 权限不足;
- 依赖服务未启动;
- 软件包版本不兼容。
很多错误原因不在最后一行,而在前面几行。例如最后显示启动失败,真正原因可能是更早的一行提示配置文件第几行有问题。
排查时建议看最近 50 到 100 行,而不是只看最后一条。
五、查看系统重启和异常记录
查看本次启动以来的日志:
journalctl -b
查看上一次启动的日志:
journalctl -b -1
如果服务器突然重启,可以查看上一次启动前的日志,判断是否有内存不足、服务崩溃或系统异常。
如果怀疑资源问题,可以结合系统资源检查一起排查。资源查看方法可参考本系列中的“Ubuntu 查看系统资源教程”。
六、日志排查要注意信息安全
日志里可能包含路径、账号、请求参数、IP、错误堆栈等信息。向他人求助时,不要直接把完整日志公开发布。
可以保留关键错误行,隐藏域名、账号、密钥、内部路径和用户数据。服务器日志是排查依据,但也可能包含敏感信息。
七、排查完成后要记录结论
日志看完后,不要只记得“问题修好了”。建议记录:
- 故障时间;
- 受影响服务;
- 日志中的关键错误;
- 实际原因;
- 处理方法;
- 是否需要后续优化。
长期来看,这份记录会变成自己的服务器维护手册。
FAQ
Q1:journalctl 看不到某个服务日志怎么办?
A:先确认服务是否由 systemd 管理,再确认服务名称是否正确。部分软件也会把日志写到独立日志文件中。
Q2:日志太多看不懂怎么办?
A:先按服务名和时间范围筛选,再重点看 error、failed、permission、address already in use 等关键提示。
Q3:可以把日志发给别人帮忙看吗?
A:可以,但要先隐藏账号、密钥、域名、用户数据和内部路径等敏感信息。

