journalctl 通过 --since 和 --until 精确过滤日志时间范围,支持相对(如 "2 hours ago")、绝对(如 "2026-09-14 14:30:00")及简写格式,需注意时区(推荐 --utc)和持久化配置,配合 -u、-p、--no-pager 等选项提升排查效率。

journalctl 支持灵活的时间范围过滤,关键在于用对 --since 和 --until 参数,并注意格式与时区细节。不加时间限制直接查日志容易淹没在海量记录里,精准框定窗口才能快速定位问题。
支持的时间表达方式
journalctl 时间解析宽松,但必须用英文或 ISO 格式,中文(如“昨天”)或空格缺失会失败:
-
相对时间:如
--since "2 hours ago"、--since "yesterday"、--since "1 week ago" -
绝对时间:如
--since "2026-09-14 14:30:00"、--until "2026-09-15 08:00" -
简写形式:单独写
--since "2026-09-14"默认从当天 00:00:00 开始;--since "today"同理 -
注意:
--until不支持"30 minutes ago"这类相对表达,只能用具体时间或"now"
常用时间组合示例
实际排查中,这些组合最实用:
- 查今天 09:00 到 12:00 的 nginx 日志:
journalctl -u nginx.service --since "today 09:00" --until "today 12:00" - 查最近 90 分钟所有 warning 及以上级别日志:
journalctl --since "90 min ago" -p warning - 查上一次启动中、某服务的完整日志:
journalctl -u sshd.service -b -1 - 精确到秒的事故复盘:
journalctl --since "2026-09-14 22:15:03" --until "2026-09-14 22:17:41"
时区与持久化影响
默认按系统本地时间解析。跨团队协作或服务器分布多地时,建议统一加 --utc 避免 8 小时偏差:
journalctl --since "2 hours ago" --utc- 若日志未持久化(
/var/log/journal/为空),--since可能查不到历史重启前的日志,需先确认Storage=persistent已在/etc/systemd/journald.conf中启用
提升可读性的小技巧
时间范围配合其他选项,让输出更清晰:
- 避免卡在分页器里:
journalctl -u nginx.service --since "1 hour ago" --no-pager - 用 ISO 时间格式增强可读性:
journalctl -u nginx.service --since "1 hour ago" -o short-iso - 实时跟踪并高亮错误关键词:
journalctl -fu nginx.service --since "10 min ago" | grep --color=always -E 'ERROR|CRITICAL|WARN'


















