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를 처음 접했기 때문에 아마도 그럴 것입니다.)

관련 정보