max*_*zig 108 centos systemd systemd-journald
journalctl在 CentOS 7 系统下执行只会打印上次启动后生成的消息。
命令
# journalctl --boot=-1
Run Code Online (Sandbox Code Playgroud)
印刷
Failed to look up boot -1: Cannot assign requested address
Run Code Online (Sandbox Code Playgroud)
并以状态 1 退出。
将它与当前的 Fedora 系统进行比较,我注意到 CentOS 7 没有/var/log/journal(journalctl也没有提供--list-boots)。
因此,我的问题是如何显示在上次启动日期之前写入的日志消息。
或者,也许这个功能必须在 CentOS 7 上启用?
(journalctl手册页将“systemd 208”列为版本号。)
max*_*zig 127
在 CentOS 7 上,您必须启用日志消息的持久存储:
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
Run Code Online (Sandbox Code Playgroud)
否则,不会在两次引导之间保留日志日志消息。
是否journald保留以前启动的日志消息是通过/etc/systemd/journald.conf. CentOS 7 下的默认设置是:
[Journal]
Storage=auto
Run Code Online (Sandbox Code Playgroud)
凡journald.conf手册页解释auto为:
“volatile”、“persistent”、“auto”和“none”之一。如果“易失”,日志日志数据将仅存储在内存中,即低于 /run/log/journal 层次结构(如果需要创建)。如果“持久”,数据将优先存储在磁盘上,即低于 /var/log/journal 层次结构(如果需要创建),并回退到 /run/log/journal(如果需要创建),在此期间早期启动,如果磁盘不可写。“ auto ”类似于“persistent”,但如果需要,不会创建目录/var/log/journal,因此它的存在控制了日志数据的去向。
(强调我的)
该systemd-journald.service手册页这样说:
默认情况下,日志将日志数据存储在 /run/log/journal/ 中。由于 /run/ 是易失性的,重启时日志数据会丢失。为了使数据持久化,创建 /var/log/journal/ 就足够了,然后 systemd-journald 将存储数据。
显然,Fedora 19 中的默认值已更改(更改为永久存储)并且由于 CentOS 7 源自 Fedora 18 - 默认情况下它仍然是非持久的。默认情况下,持久性是在 journald via/var/log/messages和/var/log/messages-YYYYMMDD由 rsyslogd(默认运行并从 journald 获取其输入)编写的轮换版本之外实现的。
因此,要在 RHEL/CentOS 7 下使用 journald 启用持久日志记录,必须
# mkdir /var/log/journal
Run Code Online (Sandbox Code Playgroud)
然后修复权限并重新启动日志,例如通过
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
Run Code Online (Sandbox Code Playgroud)
systemctl restart systemd-journald
Run Code Online (Sandbox Code Playgroud)
您可能会丢失日志:请参阅https://github.com/systemd/systemd/issues/2236
mkdir /var/log/journal
Run Code Online (Sandbox Code Playgroud)
有一个变化v208:
systemd-journald 将不再将其创建的日志文件组调整为“systemd-journal”组。相反,我们依赖“systemd-journal”组拥有的日志目录及其 setgid 位设置,以便内核文件系统层将自动强制日志文件继承此组分配。
systemd 中包含的 tmpfiles.d(5) 片段将确保在日志目录中正确设置 setgid 位和组(如果每次启动时存在日志目录)。
所以,你应该运行类似的systemd-tmpfiles --create --prefix /var/log/journal东西mkdir /var/log/journal
也可以看看:
| 归档时间: |
|
| 查看次数: |
155996 次 |
| 最近记录: |