最直接有效的方式是用 journalctl -u 加上完整的服务单元名,如 nginx.service;名称必须准确带后缀,可通过 systemctl list-units --type=service | grep nginx 确认;支持实例化服务(如 myapp@123.service)、其他类型单元(如 sshd.socket)及多服务、通配符组合查询,并可结合 -b、-f、-n、--since、-p 等参数精准筛选日志。

最直接有效的方式是用 journalctl -u 加上完整的服务单元名,比如 nginx.service。关键在于名称必须准确、带后缀,否则查不到日志且不报错。
确认服务单元名再执行
systemd 中每个服务对应一个 unit,名称通常以 .service 结尾,但 systemctl list-units 显示时可能省略后缀。不能凭印象写,得先查实:
- 运行
systemctl list-units --type=service | grep nginx,确认输出中显示的是nginx.service - 如果是实例化服务(如
myapp@123.service),必须写全名,myapp@.service查不到 - 非
.service类型的单元也能查,比如sshd.socket、logrotate.timer,同样要带对应后缀
基础筛选与常用组合
拿到准确名称后,加几个参数就能让日志更聚焦:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
journalctl -u nginx.service:查该服务所有历史日志(默认分页) -
journalctl -u nginx.service -b:只查本次开机以来的日志,避免混入旧记录 -
journalctl -u nginx.service -f:实时跟踪新日志,适合调试启动或响应行为 -
journalctl -u nginx.service -n 50:只显示最后 50 行,防止刷屏
配合时间与级别进一步聚焦
光按服务还不够?加上时间或级别能快速定位异常:
-
journalctl -u docker.service --since "2 hours ago":查最近两小时的 docker 日志 -
journalctl -u sshd.service -p err:只看 sshd 的错误及更严重级别(err、crit、alert、emerg) -
journalctl -u mysql.service --since "today" -p warning:查 MySQL 今天所有警告及以上日志
多服务或通配符批量查看
需要横向对比或查一组相关服务时:
-
journalctl -u nginx.service -u php-fpm.service:同时查两个服务,按时间合并输出 -
journalctl -u "sshd*":用引号包裹通配符,匹配sshd、sshd@*等所有以 sshd 开头的单元 -
journalctl -u "docker*" --since "1 day ago":查 docker 相关所有单元(如docker.service、docker.socket)近 24 小时日志










