最准、最全查服务日志的方式是 journalctl -u 服务名.service;systemctl status 仅显示摘要,详细错误需用 journalctl 查看,支持按行数、时间、级别、PID 等筛选,并可启用持久化存储和指定启动会话排查。

直接看 journalctl -u 服务名.service,这是最准、最全的方式。systemctl status 只显示几行摘要,真正报错细节全在 journalctl 里。
用 journalctl 查指定服务的完整日志
服务启动失败后,第一时间运行:
-
sudo journalctl -u nginx.service—— 查 nginx 全部历史日志 -
sudo journalctl -u nginx.service -n 50—— 只看最近 50 行,快速聚焦 -
sudo journalctl -u nginx.service --since "2 min ago"—— 查两分钟内日志,适合刚失败时用 -
sudo journalctl -u nginx.service -p err—— 只显示错误级别(ERR 及以上),跳过干扰信息
配合 systemctl status 快速抓关键线索
先跑一句 systemctl status nginx.service,重点看三处:
- “Active: failed”下面的 Process: XXXX ExecStart=... 行——说明哪条命令执行出错了
- “Main PID”后的数字——可接着用
journalctl _PID=1234追查该进程全部输出 - 末尾几行日志摘要——常含“Permission denied”“No such file”等直白提示
实时观察启动过程,定位卡点
如果服务能启但很快挂,或你想复现问题,用:
-
sudo journalctl -u nginx.service -f—— 日志实时滚动,然后另开终端sudo systemctl start nginx -
sudo journalctl -xe—— 不限定服务,看整个系统上下文:依赖单元(如 network.target、dbus.socket)是否就绪,有没有 “Dependency failed” 或 “Unit xxx.service not found”
别漏掉持久化和时间范围控制
默认日志重启后丢失。若需长期排查:
- 启用持久存储:
sudo mkdir -p /var/log/journal && sudo systemctl restart systemd-journald - 查某次开机的日志(排除旧记录干扰):
sudo journalctl -u sshd.service -b(当前启动)或-b -1(上一次启动) - 确认失败时间后,缩窄窗口:
sudo journalctl -u mysql.service --since="2026-07-29 10:22:00" --until="2026-07-29 10:22:30"


















