임베디드 Linux(busybox 버전)에서 zip 프로그램으로 코어 덤프 파이핑이 실패함

임베디드 Linux(busybox 버전)에서 zip 프로그램으로 코어 덤프 파이핑이 실패함

저는 busybox 버전을 사용하여 임베디드 Linux를 개발 중입니다. Linux 코어 덤프를 생성하려면 다음을 사용합니다.

ulimit -c unlimited

그러다가 거대한 코어 파일(~1GB)을 얻었음을 확인했습니다. 내 응용 프로그램이 거대하고 너무 많은 메모리를 할당하기 때문입니다.

이제 저는 이 대용량 코어 파일을 최적화할 솔루션을 찾고 있습니다. 내가 찾은(http://man7.org/linux/man-pages/man5/core.5.html) 코어 덤프를 프로그램에 파이프할 수 있습니다. 코어 덤프를 생성하는 동안 압축하려고 합니다.

 cat /proc/sys/kernel/core_pattern

| /tmp/shellscript.sh  /tmp/core.%p.gz

cat  /tmp/shellscript.sh
#!/bin/sh
/bin/gzip > "$1"

이제 "코어 덤프를 프로그램으로 전송"은 다음에서만 작동한다는 것을 깨달았습니다.일반 데스크탑 우분투 시스템.

그러나 우리의 목표는 임베디드 Linux 시스템의 비지박스 버전을 사용하는 것입니다. busybox에서 "프로그램으로 코어 덤프 전송(이 경우 압축)"과 똑같은 단계를 수행할 때 코어 덤프가 전혀 생성되지 않는지 궁금합니다.

그러나 busybox에서 파이프 옵션을 제거하면 코어 덤프가 표시됩니다. 즉

root@(none):~ cat /proc/sys/kernel/core_pattern
/tmp/core_top

비지박스 버전이 포함된 임베디드 Linux에서 코어 덤프를 프로그램으로 파이핑하는 것이 작동하지 않는 이유를 아는 사람이 있습니까?

감사해요,

답변1

man 5 core

   *  The program must be specified using an absolute pathname (or a
      pathname relative to the root directory, /), and must immediately
      follow the '|' character.

|따라서 및 사이에는 공백이 없어야 합니다 /.

/tmp또한 스크립트가 있는 파티션에 스크립트가 설치되어 있을 수도 있습니까 -o noexec?

관련 정보