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