journalctl:查询 systemd 日记
systemd
在取代 SUSE Linux Enterprise 12 中的传统 init 脚本时(参见第 13 章 “systemd 守护程序”),引入了自身的称为日记的日志记录系统。由于所有系统事件都将写入到日记中,因此,用户不再需要运行基于 syslog 的服务。
日记本身是 systemd
管理的系统服务,全名为 systemd-journald.service
。它会根据从内核、用户进程、标准输入和系统服务错误收到的日志记录信息,维护结构化的索引日记,并以此方式来收集和储存日志记录数据。systemd-journald
服务默认处于启用状态。
# systemctl status systemd-journald
systemd-journald.service - Journal Service
Loaded: loaded (/usr/lib/systemd/system/systemd-journald.service; static)
Active: active (running) since Mon 2014-05-26 08:36:59 EDT; 3 days ago
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 413 (systemd-journal)
Status: "Processing requests..."
CGroup: /system.slice/systemd-journald.service
└─413 /usr/lib/systemd/systemd-journald
[...]
将日记设为永久
默认情况下,日记在 /run/log/journal/
中储存日志数据。由于/run/
目录具有易失本性,因此,在重引导时会丢失日志数据。要永久保存日志数据,/var/log/journal/
目录必须存在且具有正确的所有权和权限,如此,systemd-journald
服务便可在其中储存其数据。systemd
将为您创建该目录,如果您执行以下操作,它将会切换到永久日志记录:
- 以 root 身份打开 /etc/systemd/journald.conf 进行编辑。
- 将包含 Storage= 的行取消注释,并将它更改为
- 保存该文件,然后重启动 systemd-journald:
# vi /etc/systemd/journald.conf
[...]
[Journal]
Storage=persistent
#Compress=yes
[...]
# systemctl restart systemd-journald
journalctl 的有用开关
本节介绍了一些可用来增强 journalctl
默认行为的常见有用选项。journalctl
手册页 man 1 journalctl
中介绍了所有开关。
要显示与特定可执行文件