journalctl
只会打印上次引导后生成的消息。命令
# journalctl --boot=-1
打印
Failed to look up boot -1: Cannot assign requested address
并以状态1退出。
与当前的Fedora系统进行比较,我注意到CentOS 7没有
/var/log/journal
(而journalctl
没有提供--list-boots
) 。因此,我的问题是如何显示在上次启动日期之前编写的日志消息。
或者也许必须在CentOS 7上启用此功能? >
(
journalctl
手册页列出了“ systemd 208”作为版本号。)#1 楼
tl; dr在CentOS 7上,必须启用日志消息的持久存储:
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
否则,日志日志消息是
详细信息
journald
是否保留来自先前引导的日志消息是通过/etc/systemd/journald.conf
配置的。 CentOS 7下的默认设置是:[Journal]
Storage=auto
在那里,journald.conf手册页将
auto
解释为:“易失性”,“持续性”,“自动”和“无”。如果为“ volatile”,则日志日志数据将仅存储在内存中,即/ 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即可存储数据。永久存储),并且由于CentOS 7是从Fedora 18派生的-默认情况下它仍然不存在。默认情况下,持久性是在通过rsyslogd编写的
/var/log/messages
和循环版本/var/log/messages-YYYYMMDD
之外的日记记录之外实现的(默认运行并从日记记录获取输入)。 RHEL / CentOS 7必须具有# mkdir /var/log/journal
,然后修复权限并重新启动日志记录,例如通过
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
#2 楼
systemctl restart systemd-journald
您可能会丢失日志:请参阅https://github.com/systemd/systemd/issues/2236
mkdir /var/log/journal
v208
有所更改:systemd-journald将不再将其创建的日记文件组调整为“ systemd-journal”组。取而代之的是,我们依靠日记目录归“ systemd-journal”组及其setgid位所拥有,以便内核文件系统层将自动强制日记文件继承此组分配。
错误:
systemd-tmpfiles --create --prefix /var/log/journal
组的用户无法读取某些日记文件评论
嗯,或执行`chmod 4755 / var / log / journal; chown root:systemd-journal!:2'-或只是重新启动。我将更新我的答案。
–maxschlepzig
2015年9月30日下午6:43
@maxschlepzig,仅重新启动不起作用:github.com/systemd/systemd/pull/1398#issuecomment-144247498
– Evgeny Vereshchagin
15年9月30日在12:09
chmod 4755 / var / log / journal; chown root:systemd-journal!:2正常工作。但是tmpfiles:在日记目录上使用ACL magic
– Evgeny Vereshchagin
2015年9月30日12:13在
好的,另一个错误:)-我已经更新了答案。
–maxschlepzig
15年9月30日在18:46
评论
应该使用systemctl restart systemd-journald重新启动。因此,无需重新启动。
–xx4h
14-10-16在17:52
@ xx4h,更新了答案
–maxschlepzig
15年7月30日在20:39
在debian中,这记录在/usr/share/doc/systemd/README.Debian中:install -d -g systemd-journal / var / log / journal。
– Pevik
15年8月12日在20:13
@pevik,我看过一个CentOS 7系统(我刚刚使用过mkdir),当前权限是drwxr-sr-x。 3 root systemd-journal-也许日志记录修复了初始化期间的权限/所有权。
–maxschlepzig
15年8月13日在6:10
学习了一个巧妙的技巧:如果您发送USR1信号而不是重新启动,则不会丢失当前的日志内容。 killall -USR1 systemd-journald
–詹姆斯B
16/09/16在12:12