journalctl

Table of Contents

systemd 拥有强大的处理与系统日志记录功能,不像其他工具,日志被分散在整套系统中。

systemd 尝试提供一套集中化管理系统,统一处理内核及用户级的日志信息。而这一功能是有 systemd 的组件 journal 的守护进程 journald。

我们使用 journalctl 命令来查看守护进程收集到的日志。

单独执行 journalctl 可以查看系统中的所有日志,如果系统运行时间较长,systemd 的日志会变得很大。

1. 运维

日志文件位置,基本配置: /etc/systemd/journald.conf ,调整文件: /etc/logrotate.conf

  • journalctl --disk-usage 查看日志占用磁盘

2. 常规操作

  • -n: 显示最后几行
  • -f: 显示最新信息,类似( tail -f
  • -b: 显示本次启动之后的所有日志,在加上数字可以显示上次启动的所有日志( -1 ),以此类推: journalctl -b -2 表示上上次启动的日志
  • _PID=1: 显示指定进程
  • --disk-usage: 查看日志所占磁盘空间
  • -r: 逆序显示日志(排查问题时比较方便)

3. 过滤条件

  • 按照 unit 过滤: journalctl -u nginx.service ,可以指定多个 unit 合并查看日志
  • 按照时间过滤: --since--until ,用来设置时间段,时间格式支持多种,比如: YYYY-MM-DD HH:MM:SS

4. 输出格式

可使用 -o 指定输出格式(只列出常用的),

  • cat: 只显示信息字段本身,也就是应用日志;
  • json: 标准 JSON 格式,一行一个条目;
  • json-pretty: 适合人类阅读习惯;
  • short: 默认 syslog 类输出格式;
  • verbose: 显示所有的字段;

更多的 journalctl 用法,可以通过 man 命令获取。

5. 参考

First created: 2018-06-01 15:50:40
Last updated: 2022-12-11 Sun 12:49
Power by Emacs 29.0.91 (Org mode 9.6.6)