如何删除 coredumpctl 中缺少 corefile 的条目

如何删除 coredumpctl 中缺少 corefile 的条目

由于某种原因,coredumpctl不断囤积不再有可用核心文件的条目。我怎样才能清理它们以免它们堵塞输出?

答案1

列出所有 coredump 条目及其 ID:

coredumpctl list

或者

coredumpctl list --no-pager --no-legend

识别那些没有核心文件的。

这些条目的大小将为 0 或一条消息,指示核心文件丢失。

coredumpctl remove <ID>

或者

由于coredumpctl list列出了日志记录的转储文件,因此您可以手动删除/var/lib/systemd/coredump未列出的转储文件。

浏览转储文件,将文件与命令结果进行比较,并删除未列出的文件。

使用以下命令删除每个条目:

rm /var/lib/systemd/coredump/core.<ID>.<executable>.core

再次运行 list 命令以检查条目是否已被删除。

为了清理 存储的所有转储核心systemd-coredump,您可以运行(以 root 身份):

systemd-tmpfiles --clean

为了回答您的直接问题,是的,核心转储文件可以安全删除。

更新:

除了重写日志文件之外,没有直接的方法可以清除单个条目journalctl,这似乎不是一个简单的任务。

来自@aviro | OP 不想从 中删除文件/var/lib/systemd/coredump。恰恰相反。他想要删除或过滤掉中没有可用文件的coredumpctl条目(或更准确地说:条目) 。他的抱怨是,不断囤积不再有可用核心文件的条目。 _ 囤积意味着他不想显示核心文件在.journalctl/var/lib/systemd/coredump_coredumpctl/var/lib/systemd/coredump

要过滤核心转储文件丢失的条目,您可以journalctl与消息过滤器一起使用,替换为列表条目的实际 ID:

journalctl -u systemd-coredump --grep="<ID>"

经过一番研究后,我发现您无法删除特定 systemd 单元的日志,因为日志是交错的,如果您仅删除一个单元,则会损坏日志,因此journalctl不允许您删除

对要从中删除条目的program copy_journal.py日志文件使用我的 Python 3 。/var/log/journal

systemd 的日志旨在防止这种篡改。

记录了日志文件格式这里它描述了它的支持在线前向安全密封:

标签对象用于密封日志以供更改。标签对象会定期附加到文件中。标记对象由 SHA-256 HMAC 标记组成,该标记是根据自上次写入标记以来存储在文件中的对象计算的,如果尚未写入标记,则从头开始计算。 HMAC 的密钥是通过外部维护的 FSPRG 逻辑为写入 epoch 的 epoch 计算的。序列号 seqnum 随着每个标签而增加。 [..]

相关内容