journalctl命令-内核应用日志管理工具

journald可以记录开机过程的信息,包括启动服务和服务启动失败的情况等。 它由systemd调用来协助记录日志,systemd-journald会将先将信息记录到内存中,再由rsyslogd记录到硬盘中。

journalctl 语法

journalct [-nrpf] [--since TIME] [--until TIME] _optional

默认会显示全部的 log 内容,从旧的输出到最新的信息

参数
描述

-n

显示最近 n 行的信息,找最新信息时有用

-r

反向输出,从最新的输出到最旧的输出

-p

显示后面接的信息重要性排序,前一章讲解的日志级别

-f

类似 tail -f 功能,持续显示 journal 日志内容

-o

输入格式(short, short-iso,short-precise, short-monotonic, verbose,export, json, json-pretty,json-sse, cat)

--since --until

设置开始与结束时间,只显示某段时间范围内的数据

_SYSTEMD_UNIT=unit.service

只输出某个服务的信息,也可以用-u

_COMM=bash

只输出与 bash 有关的信息

_PID=pid

只输出某个 PID 的信息

_UID=uid

只输出某个 uid 的信息

SYSLOG_FACILITY=[0-23]

使用 syslog.h 规范的服务相对应的序号来显示指定数据

部分示例

# 显示昨天的日志
journalctl --since yesterday

# 9点后一小时的日志
journalctl --since 9:00 --until "1 hour ago"

# 指定时间范围
journalctl --since "2022-01-16 9:00:00" --until "2022-01-16 10:00:00"

# 只看信息严重等级为ERROR的信息
journalctl -p err

# 只看指定服务的日志信息
journalctl -u ntpd

有时会发现日志目录下journal日志占用比较大的硬盘空间 清理/var/log/journal文件的方法

# 临时清理
echo "" > system.journal

# 只保留近4周的日志 
journalctl --vacuum-time=4w

# 只保留指定大小的日志
journalctl --vacuum-size=500M

最后更新于