我最近了解到它journalctl
占用了我 16GB SD 卡(Raspberry Pi)的很大一部分:
$ journalctl --disk-usage
Archived and active journals take up 312.1M in the file system.
我没有这种感觉,journalctl
并且journald
在我的用例中为这台机器拉了重担。这是一个老式的 RPi,并且rsyslog
还在运行。我估计我的需求和使用journalctl
可能是“千载难逢”。因此,我决定禁用journald
- which "feeds" journalctl
。我认为这很简单,使用systemctl
tostop
或者只是disable
ing thesystemd-journald.service
以便它不会在下次启动时启动。
在拔掉插头之前,我决定做一些研究。没有找到数千个提供“操作方法”建议的参考资料,而是针对我的特定搜索词“如何禁用日记”的结果非常少。相反,结果大多提供了减少资源消耗journald
的建议。我确实找到了一些让我停下来的参考资料:
ArchLinuxjournald
论坛中的一个旧帖子表明,禁用它是不可能的。即,但这篇文章现在已经有 10 年历史了......"Masking systemd-journald causes all kinds of dependency failures and drops you at an emergency prompt."
systemd-journald.service 手册说,"stopping it [systemd-journald.service] is not recommended."
. 文档从那里开始讨论命名空间?
我了解到阻止systemd
单位启动的常用命令无效;即它正常启动:
$ sudo systemctl disable systemd-journald.service
$ sudo reboot
# ... and after boot & login:
$ systemctl status systemd-journald.service
● systemd-journald.service - Journal Service
Loaded: loaded (/lib/systemd/system/systemd-journald.service; static)
Active: active (running) since Fri 2022-06-03 07:30:29 UTC; 1min 59s ago
TriggeredBy: ● systemd-journald-audit.socket
● systemd-journald.socket
● systemd-journald-dev-log.socket
Docs: man:systemd-journald.service(8)
man:journald.conf(5)
Main PID: 134 (systemd-journal)
Status: "Processing requests..."
Tasks: 1 (limit: 1598)
CPU: 820ms
CGroup: /system.slice/systemd-journald.service
└─134 /lib/systemd/systemd-journald
...
$
怎么可能journald
被禁用?...或者可以禁用它吗?
如果不是,为什么systemd
开发人员会强迫用户这样做?(好的,是的 - 征求意见,所以忘记这部分问题。)
journald
使用时不想删除的原因rsyslogd
是可以从rsyslogd
日志中获取信息,并且它们可以很好地配合使用。这有点与此处评论中链接的一些问答相矛盾。在当前的 linux 系统上对此进行了一些观察(在 Fedora 和 Debian 上对此进行了检查),该系统配置为 journald 仅使用易失性(在内存中)存储,并
rsyslog
写入实际的日志文件:/var/run/log
是一个有一个子目录的目录,journal
. 这包含由 写入systemd-journald
和读取的rsyslogd
文件。请注意,此目录位于tmpfs
分区上,因此它算作内存易失性存储。/dev/log
是 的符号链接/run/systemd/journal/dev-log
。这些
/etc/rsyslog.conf
系统上的包括这个(不是库存rsyslog.conf
):Fedora 和 Debian 在这里的库存配置不同;前者确实使用
imjournal
以及imuxsock
(用户空间套接字)。1 Debian 使用imuxsock
andimklog
(内核日志),大概是因为没有imjournal
它需要监听内核本身。我也认为这有点不合时宜。我在这里的部分观点是,完全删除 journald 可能并非不可能,但这是一个坏主意。它是当代基于 systemd 的系统的核心组件。它的缺点是它可能使用比 rsyslog 更多的磁盘空间,但这很容易通过使用
Storage=volatile
and (eg)RuntimeMaxUse=64M
in来配置/etc/systemd/journald
,从 journald 馈送 rsyslogd 是一种后端/前端关系;rsyslog 很棒,因为它提供了纯文本日志记录以及对记录的内容和方式进行更细粒度的控制,而 journald 提供了与系统服务的更好集成。
imjournal
. 用户空间和内核连接不是必需的,因为这些消息都将通过日志记录,并且(我没有检查过)如果您使用多个来源,则可能会重复。禁用此服务不会阻止您的设备运行,但日志记录会明显停止。我看不出其他问题。