我在谷歌找不到任何安全的方法来清除 systemd 日志。有谁知道这样做的任何安全可靠的方法?
假设我正在尝试一些东西,我的日志被各种错误消息弄得乱七八糟。此外,我正在使用 Conky 在桌面上显示我的日记。我真的不想看到那些错误,因为它们让我想起我正在修复这些东西的糟糕日子,我想在经历了这次恐怖之后感觉自己像个新手。我想每个人都会同意这是清除日志的正当理由:P。
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”列为版本号。)
我的问题很简单:如何在不重启的情况下告诉 journald 重新读取其配置文件?
我已经做了一些更改/etc/systemd/journald.conf,我想看看它们是否正确,并且一切都按我的预期工作。
我不想重启。
我的 arch linux 在设备上失败了。该设备没有任何屏幕,它不响应网络。所以我拿了它的 SD 卡,把它插入 ubuntu 桌面,在那里看到一个新的 system.journal 和......如何看到里面有什么?
从 Arch Linux 文档中我知道我可以做到:
strings /mnt/arch/var/log/journal/.../system.journal | grep -i message
Run Code Online (Sandbox Code Playgroud)
但它真的很基础。问题是:
从另一个系统检查 system.journal 是否有比使用strings更方便的方法?例如,我可以指定要为journalctl读取的文件吗?
我想知道 systemd-journald 是一种新的 syslog 协议实现,或者更确切地说,它使用了 syslog 实现,例如 rsyslog、syslog-ng
我用谷歌搜索了一下,但我没有发现任何令人信服的内容。
我觉得我忽略了显而易见的事情,但我不知道如何让我的 Arch Linux 服务器使用systemd,syslog从远程系统接收和记录消息。
我有一个 Cisco 678 DSL 调制解调器和一个 DD-WRT WAP,两者都可以配置为将 syslog 格式的消息发送到其他机器。我希望那台机器成为我的 Arch Linux 服务器。
我四处搜索,我发现的只是“systemd 替换了 syslog”,或者我不再需要运行syslog或与我的问题同样无关的东西。
更新
我在Arch 论坛上问过,但没有得到相关的答案。我安装了 syslog-ng 只是为了侦听 UDP 端口 514。syslog-ng 从我的 Cisco 678 和我有的 DD-WRT WAP 写入消息。不幸的是,这些消息并没有出现在 systemd 的日志中,而是出现在平面文件中。因此,没有确切的解决方案,而是一种解决方法。我宁愿将系统日志消息放在日志中,而不是平面文件中。
我花了几天时间编写了一个 python 脚本,并为它创建了一个 systemd 单元文件。在测试期间,该脚本将大量错误记录到 journald。现在我已经完成了,我想从日记中清除这些错误。
有多种方法可以清除整个日志,如下所述:如何清除 journalctl
包括使用journalctl --vacuum-time=2d、使用journalctl --vacuum-size=500M和临时设置SystemMaxUse=/etc/systemd/journald.conf 中的为一个非常低的值。
所有这些似乎都会清除整个日志,影响所有单位。我只需要清除单个单元的条目。这可能吗?
我刚刚注意到这个verify选项journalctl并决定试一试,它显示损坏,可能是什么原因造成的?如果我应该做些什么呢?我应该进一步调查吗?
journalctl --verify
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1000.journal
Invalid object contents at 3733856?????????????????????????????? 0%
File corruption detected at /var/log/journal/19184893a1d645c7a43729e79b10a876/system.journal:3733856 (of 91734016, 4%).
FAIL: /var/log/journal/19184893a1d645c7a43729e79b10a876/system.journal (Bad message)
Invalid object contents at 21575496????????????????????????????? 45%
File corruption detected at /var/log/journal/19184893a1d645c7a43729e79b10a876/system@60e058db556e4de4b256d0b1ff176aa4-0000000000000001-0004e0b436d20aa1.journal:21575496 (of 44052480, 48%).
FAIL: /var/log/journal/19184893a1d645c7a43729e79b10a876/system@60e058db556e4de4b256d0b1ff176aa4-0000000000000001-0004e0b436d20aa1.journal (Bad message)
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1000@60e058db556e4de4b256d0b1ff176aa4-0000000000000a91-0004e0b4ff9a949a.journal
PASS: /var/log/journal/19184893a1d645c7a43729e79b10a876/user-1001.journal
Run Code Online (Sandbox Code Playgroud) journalctl -b | grep Supervising | wc -l
2819
Run Code Online (Sandbox Code Playgroud)
发行版是 Fedora 35,vanilla,由 PipeWire 运行。
我很确定所有现代 Linux 发行版都会受到影响,但人们并不关心。
rsyslog这里没有,journald 也不支持过滤。
这真是太荒谬了。我肯定可以修补它,但问题是如何在不应用修补程序和重建的情况下完成它。这个东西,/usr/libexec/rtkit-daemon甚至没有手册页,也没有提供--help任何线索。
有一个相关的问题也从未得到解答:rtkit:列出它正在“监督”的线程?
我只能想到运行rtkit-daemon一些包装器,它只是禁用与 /system 日志记录相关的所有功能/dev/log。有人见过类似的东西吗?
我已经提交了一份错误报告以防万一。
我创建了一个故意除以零错误的程序。
如果我在命令行中运行它,它会返回:“浮点异常”
但是,如果我将它作为 systemd 服务运行,则看不到此错误消息。在我的 systemd 脚本中,我添加了: StandardError=journal
但是在使用journalctl时,错误信息无处可见。如何将此错误消息添加到使用 journalctl 查看的日志中?