将核心转储管道传输到嵌入式 Linux(busybox 版本)上的 zip 程序失败

将核心转储管道传输到嵌入式 Linux(busybox 版本)上的 zip 程序失败

我正在使用 busybox 版本开发嵌入式 Linux。为了生成 linux 核心转储,我使用

ulimit -c unlimited

然后我看到我得到了一个巨大的核心文件(~1GB)。因为我的应用程序很大并且分配了那么多内存。

现在,我正在寻找优化这个大型核心文件的解决方案。我发现 (http://man7.org/linux/man-pages/man5/core.5.html)我可以通过管道将核心转储传输到程序。我正在尝试在生成核心转储时对其进行压缩。

IE

 cat /proc/sys/kernel/core_pattern

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

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

现在,我意识到“将核心转储传输到程序”仅适用于普通桌面ubuntu系统。

但我们的目标是使用busybox版本的嵌入式Linux系统。我想知道当我在 busybox 上执行完全相同的步骤“将核心转储传输到程序(在本例中为压缩)”时,它根本不会产生核心转储。

但是如果我删除 busybox 上的管道选项,那么我会看到核心转储。 IE

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

你们是否知道为什么将核心转储管道传输到程序在带有 busybox 版本的嵌入式 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

相关内容