最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Journalctl 实战技巧:怎样提取特定服务与单元的运行日志
时间:2026-07-03 10:05:46 编辑:袖梨 来源:一聚教程网
查服务日志核心命令是 journalctl -u 服务名.service,必须带 .service 后缀;服务单元名不等于进程名,需用 systemctl list-units --type=service 确认;支持 --since/--until 指定时间范围;常用选项包括 --no-pager、-n、-o short-iso;-u 也适用于 socket/timer/path 等 unit 类型。
查特定服务日志,核心就一条命令:journalctl -u 服务名.service,但必须带 .service 后缀,否则静默返回空——这是最常踩的坑。
确认服务单元名称,避免查不到
systemd 里的服务名不等于进程名或命令名。比如你装了 Nginx,运行 ps aux | grep nginx 看到的是 nginx,但它的 unit 名通常是 nginx.service。
- 列出所有已注册服务:
systemctl list-units --type=service - 快速过滤目标服务:
systemctl list-units --type=service | grep -i ssh→ 可能输出sshd.service或ssh.service - 若服务刚启用但未启动,加
--all:systemctl list-units --type=service --all | grep myapp
按时间范围精准提取日志
-u 本身不支持“时间段”语法,但搭配 --since 和 --until 就能锁定任意时段。
- 相对时间更实用:
journalctl -u docker.service --since "2 hours ago" --until "now" - 绝对时间要加引号,空格不能省:
journalctl -u nginx.service --since "2026-06-10 08:00:00" --until "2026-06-10 17:30:00" - 常用表达:
yesterday、today、1 day ago、30 minutes ago(不支持中文如“昨天”)
让输出更清晰、更易用
默认输出走分页器(less),对远程终端或管道处理不友好;加上几个小选项,效率翻倍。
-
--no-pager:禁用分页,直接输出到终端或管道 -
-n 100:只显示最后 100 行,防刷屏 -
-o short-iso:时间戳统一为 ISO 格式(如2026-06-11T09:05:22),便于比对 - 组合示例:
journalctl -u mysql.service --since "1 hour ago" -n 50 -o short-iso --no-pager | grep -i "error|fail"
扩展场景:不只是 .service 单元
journalctl 的 -u 不仅适用于服务,还能查其他类型 unit:
- socket 单元:
journalctl -u sshd.socket(用于排查 socket 激活失败) - timer 单元:
journalctl -u logrotate.timer(看定时任务是否如期触发) - path 单元:
journalctl -u mywatch.path(监控路径事件日志) - 注意:这些 unit 名同样需带后缀,且须先通过
systemctl list-units --type=socket等确认存在
相关文章
- 清凉一夏 遗落圣迹 太阳帽收集日 07-10
- 《少年三国志》12.4.0版本全新上线 07-10
- 拆迁专家"希望先生"手把手教你"零元购"! 07-10
- 《王者传奇》本周全新灵兽——海马 07-10
- 7月10日 版本更新服务器维护公告 07-10
- 逃离后室突袭登陆Switch2 新增噩梦难度模式 07-10