systemd-coredump - 无效参数

systemd-coredump - 无效参数

我试图使用 systemd-coredump 强制进行核心转储,但是,当我检查日志时,我看到以下错误:

[电子邮件受保护]:在步骤 NETWORK 生成 /lib/systemd/systemd-coredump 时失败:参数无效

coredumpctl报告没有核心。

我的核心模式是:

|/lib/systemd/systemd-coredump %P %u %g %s %t %c %e

/lib/systemd/systemd-coredump 确实存在并且可执行。我注意到在 /etc/systemd/coredump.conf 中,所有内容都被注释掉了。

[Coredump]
#Storage=external
#Compress=yes
#ProcessSizeMax=2G
#ExternalSizeMax=2G
#JournalSizeMax=767M
#MaxUse=
#KeepFree=

……这让我觉得很奇怪……

有没有一种方法可以“预览”已扩展的 core_pattern 的参数,这些参数已被输入到 systemd-coredump 中 - 这样我就可以看到那里是否有任何奇怪的事情......否则,知道问题可能是什么?

编辑

我还尝试将 core_pattern 设置为指向类似的文件

bash -c 'echo "/home/root/core.%e.%p" > /proc/sys/kernel/core_pattern'

ulimit -c unlimited

但这也不起作用——核心文件没有被创建。

答案1

我设法通过解决方法从中获得核心(我认为!)。这仍然没有回答问题,但至少让我克服了这个困难。

我创建了自己的脚本:

#!/bin/bash 
echo $@ > /home/root/arguments.txt

if [ -p /dev/stdin ]; then
    echo "Data was piped to this script!" >> /home/root/arguments.txt
    cat > /home/root/core.bin 
else
    echo "No data received" >> /home/root/arguments.txt
fi

并将 core_pattern 设置为通过此脚本进行管道传输,而不是systemd-coredump

这使我能够看到传递到脚本中的参数(因此它确实回答了问题的那部分!),arguments.txt并且核心本身被写入core.bin

(至少我认为这是核心 - 它没有给我提供大量信息,但我是 gdb 的新手,所以这可能就是原因。)

相关内容