我正在寻找一种方法来删除coredumpctl list
中的任何旧代码块的痕迹。目前,它列出了从2014-12-14开始的代码转储--从那时到现在,我对软件进行了如此频繁的更新,以至于我怀疑那些旧的代码转储现在是否能帮助我调试任何问题。不幸的是,从/var/lib/systemd/coredump
中删除文件只会使coredumpctls输出的“存在”列中的星号消失。
我找不到任何方法来删除手册中或coredumpctl的帮助输出中关于代码转储的所有信息。
发布于 2018-11-13 06:49:49
首先,您可以修剪日志,丢弃早于一天的条目:
journalctl --vacuum-time=1d
因为"coredumpctl列表“列出了日志记录的dumpfile,所以您可以手动删除未列出的/var/lib/systemd/coredump中的转储文件。
coredumpctl list
浏览转储文件,将文件与命令的结果进行比较,并删除未列出的文件。
发布于 2020-10-07 11:59:53
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
RTFM
发布于 2021-04-02 15:21:56
看起来正确的答案比预期的要容易。
为了清理由systemd存储的所有转储核心,您可以运行(作为root
):
systemd-tmpfiles --clean
您仍然会得到以下已丢弃核心的列表:
coredumpctl
但是抛出的核心实际上会消失,输出会告诉你它们是missing
。请参阅相关 man 页面以获得更多详细信息。
如果您想完全禁用这个systemd
特性,可以通过systemctl
(作为root
)完成:
systemctl disable systemd-coredump.socket
systemctl stop systemd-coredump.socket
systemctl status systemd-coredump.socket
systemctl disable systemd-coredump.socket
请注意,这个移动将无法生存的重新启动:系统d将重新启用.它在重新启动!
要真正做到这一点,您必须“隐藏”该系统模块。这反过来又转化为:
sudo ln -fs /dev/null /etc/sysctl.d/50-coredump.conf
请记住,至少在我的Arch上,我的/proc/sys/kernel/core_pattern
读取|/bin/false
,这完全避免了通过/bin/false
二进制文件来平移核心转储(根本不做任何事情)。
有关更多细节,请查看相关手册页和您的发行文档。
https://unix.stackexchange.com/questions/220420
复制相似问题