journalctl
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
命令获取。