Wie*_*and 32 core-dump systemd
我正在寻找一种方法来删除coredumpctl list. 目前它列出了从 2014 年 12 月 14 日开始的核心转储 - 从那时到现在,我经常更新软件,以至于我怀疑那些旧的核心转储现在是否会帮助我调试任何问题。不幸的是,删除文件/var/lib/systemd/coredump只会使 coredumpctls 输出的“PRESENT”列中的星号消失。
我找不到任何方法来删除联机帮助页或 coredumpctl 的帮助输出中有关 coredump 的所有信息。
首先,您可以修剪日志,丢弃一天之前的条目:
journalctl --vacuum-time=1d
Run Code Online (Sandbox Code Playgroud)
由于“coredumpctl list”列出了日志记录的转储文件,因此您可以手动删除 /var/lib/systemd/coredump 中未列出的转储文件。
coredumpctl list
Run Code Online (Sandbox Code Playgroud)
浏览转储文件,将文件与命令结果进行比较,并删除未列出的文件。
journalctl仅存档日志文件,不包括coredump文件,除非专门设置Storage=journal。所以接受的答案不正确(缺少条件)。
例如,journalctl --vacuum-time=7d保留不超过 7 天的日记。
我能找到的最接近的是该coredump.conf文件,用于MaxUse强制外部(默认)存储的核心转储占用磁盘空间Storage=external,默认为/var/lib/systemd/coredump.
查看kernel.core_pattern
cat /proc/sys/kernel/core_pattern
|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h
Run Code Online (Sandbox Code Playgroud)
实时FM
小智 6
这个食谱对我有用(Fedora 37)。简而言之,首先分离当前的systemd日志文件并用新创建的日志文件替换它们非常重要:
sudo journalctl --rotate
Run Code Online (Sandbox Code Playgroud)
然后进行清理:
sudo journalctl --vacuum-time=1d
Run Code Online (Sandbox Code Playgroud)
在那之后:
sudo journalctl --rotate
Run Code Online (Sandbox Code Playgroud)
看起来正确答案比想象的要容易。
为了清理 systemd-coredump 存储的所有转储核心,您可以运行(如root):
systemd-tmpfiles --clean
Run Code Online (Sandbox Code Playgroud)
您仍然会获得转储核心的列表:
coredumpctl
Run Code Online (Sandbox Code Playgroud)
但转储的核心实际上会消失,并且输出会告诉您它们已经消失missing。请参阅相关手册页以获取更多详细信息。
如果您想完全禁用此功能,您可以通过(如)systemd来完成:systemctlroot
systemctl disable systemd-coredump.socket
systemctl stop systemd-coredump.socket
systemctl status systemd-coredump.socket
systemctl disable systemd-coredump.socket
Run Code Online (Sandbox Code Playgroud)
请注意,此操作不会在重新启动后继续存在:systemd 将在重新启动时重新启用它!
要真正实现这一点,您必须“隐藏”该 systemd 模块。这反过来又转化为:
sudo ln -fs /dev/null /etc/sysctl.d/50-coredump.conf
Run Code Online (Sandbox Code Playgroud)
请记住,至少在我的 Arch Linux 机器上,我的/proc/sys/kernel/core_pattern读取|/bin/false完全避免了通过二进制文件传输核心转储/bin/false(根本不执行任何操作)的任何核心转储。
请检查相关的手册页和您的分发文档以获取更多详细信息。
元数据似乎保存在 systemd 日志中,所以它已经消失了
rm /var/log/journal/*/*
killall -9 systemd-journald
Run Code Online (Sandbox Code Playgroud)
缺点是所有其他系统日志也消失了。
也许更清洁的方法是如何清除journalctl中给出的方法
journalctl --vacuum-time=2d
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16413 次 |
| 最近记录: |