在我的 Ubuntu 18.04 上,我看到/var/log/journal
已经创建,但是我根本不知道它到底是什么造成的。 有人能帮助我吗?我将在下面提供更多详细信息。
这是不是一个XY问题。我问这个问题纯粹是出于好奇,为了systemd
更好地了解 Ubuntu。
我学到
通过阅读systemd-journald.service(8)和journald.conf(5),我了解到:
- 如果
Storage=persistent
在/etc/systemd/journald.conf
,/var/log/journal
则会自动创建。 - 如果
Storage=auto
在 中/etc/systemd/journald.conf
,/var/log/journal
则不会自动创建(如果不存在)。但如果系统管理员创建/var/log/journal
,systemd-journald
则会将日志写入其中。否则,它会恢复使用/run/log/journal
。
在我的 Ubuntu 18.04 上,我/etc/systemd/journald.conf
使用所有默认值:
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See journald.conf(5) for details.
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=1000
#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month
#ForwardToSyslog=yes
#ForwardToKMsg=no
#ForwardToConsole=no
#ForwardToWall=yes
#TTYPath=/dev/console
#MaxLevelStore=debug
#MaxLevelSyslog=debug
#MaxLevelKMsg=notice
#MaxLevelConsole=info
#MaxLevelWall=emerg
#LineMax=48K
换句话说,我Storage=auto
在我的系统上使用。
我也学到了systemd-tmp文件(8)和tmp文件.d(5)systemd-tmpfiles
根据 tmpfiles.d(5) 中指定的配置文件格式和位置,创建、删除和清理易失性和临时文件和目录。
因此我检查了tmpfiles.d(5)
文件夹,只找到了/usr/lib/tmpfiles.d
修改属性的配置文件/var/log/journal
,如下面的grep
输出所示:
/usr/lib/tmpfiles.d$ grep journal *.conf
journal-nocow.conf:# Set the NOCOW attribute for directories of journal files. This flag
journal-nocow.conf:# WARNING: Enabling the NOCOW attribute improves journal performance
journal-nocow.conf:# enabling the NOCOW attribute for journal files is safe, because
journal-nocow.conf:h /var/log/journal - - - - +C
journal-nocow.conf:h /var/log/journal/%m - - - - +C
journal-nocow.conf:h /var/log/journal/remote - - - - +C
systemd.conf:z /run/log/journal 2755 root systemd-journal - -
systemd.conf:Z /run/log/journal/%m ~2750 root systemd-journal - -
systemd.conf:a+ /run/log/journal/%m - - - - d:group:adm:r-x
systemd.conf:a+ /run/log/journal/%m - - - - group:adm:r-x
systemd.conf:a+ /run/log/journal/%m/*.journal* - - - - group:adm:r--
systemd.conf:z /var/log/journal 2755 root systemd-journal - -
systemd.conf:z /var/log/journal/%m 2755 root systemd-journal - -
systemd.conf:z /var/log/journal/%m/system.journal 0640 root systemd-journal - -
systemd.conf:a+ /var/log/journal - - - - d:group::r-x,d:group:adm:r-x
systemd.conf:a+ /var/log/journal - - - - group::r-x,group:adm:r-x
systemd.conf:a+ /var/log/journal/%m - - - - d:group:adm:r-x
systemd.conf:a+ /var/log/journal/%m - - - - group:adm:r-x
systemd.conf:a+ /var/log/journal/%m/system.journal - - - - group:adm:r--
h
但从、z
、Z
和的含义来看a+
,它们似乎都不是创建文件夹的/var/log/journal
。它们似乎都只是修改 的属性/var/log/journal
。
我做了一个测试,删除了文件夹/var/log/journal
并重启了电脑。然后我看到文件夹/var/log/journal
并没有被重新创建(这是预料Storage=auto
之中的,因为我的电脑就是这样的)。相反,文件/run/log/journal
夹被创建了(正如预期的那样)。
創造了什麼/var/log/journal
?
答案1
我的回答将重点介绍为什么全新安装的 Ubuntu Server 22.04 包含一个/var/log/journal
目录。其他系统可能会有所不同。
问:为什么全新安装的 Ubuntu Server 22.04 包含/var/log/journal
?
A。安装程序使用的根文件系统映像包含一个/var/log/journal
文件。安装程序本质上是在安装过程中将嵌入的映像复制到目标系统。映像中包含的文件和目录将被复制到目标系统。
安装程序使用的图像与云图像。这些命令显示映像包含/var/log/journal
目录。这导致已安装的系统也包含目录。
root@ubuntu-server:~# wget --quiet https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-root.tar.xz
root@ubuntu-server:~# tar tvf jammy-server-cloudimg-amd64-root.tar.xz | grep var/log/journal
drwxr-sr-x root/systemd-timesync 0 2022-10-19 01:04 var/log/journal/
问:为什么图像中包含/var/log/journal
?
A。该图像包含包。安装包systemd
时systemd
它将创造/var/log/journal
其脚本中的目录postinst
。
从源头来看
# Enable persistent journal, in auto-mode, by default on new installs installs and upgrades
if dpkg --compare-versions "$2" lt "235-3ubuntu3~"; then
mkdir -p /var/log/journal
# create tmpfiles only when running systemd, otherwise %b substitution fails
if [ -d /run/systemd/system ]; then
systemd-tmpfiles --create --prefix /var/log/journal
fi
fi
问:为什么会systemd
创建该包/var/log/journal
?
A有人提出错误报告请求它。
请创建 /var/log/journal,以启用持久日志记录