首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在内核生成过程中压缩内核文件

问在内核生成过程中压缩内核文件
EN

Stack Overflow用户
提问于 2011-02-21 15:20:33
回答 3查看 11.5K关注 0票数 12

有没有办法在核心转储生成期间压缩核心文件?

如果系统中的存储空间有限,有没有一种方法可以在需要生成立即压缩的核心转储时保存它?

理想情况下,该方法可以在旧版本的linux上运行,比如2.6.x。

EN

回答 3

Stack Overflow用户

发布于 2011-02-21 15:29:58

Linux内核/proc/sys/kernel/core_pattern文件将执行您想要的操作:http://www.mjmwired.net/kernel/Documentation/sysctl/kernel.txt#141

将文件名设置为类似于|/bin/gzip -1 > /var/crash/core-%t-%p-%u.gz的名称,您的核心文件将以压缩方式保存。

票数 18
EN

Stack Overflow用户

发布于 2019-02-07 06:01:32

对于嵌入式Linux系统,遵循以下脚本更改可以完美地在两个步骤中生成压缩的核心文件

步骤1:创建脚本

touch /bin/gen_compress_core.sh

chmod +x /bin/gen_compress_core.sh

cat > /bin/gen_compress_core.sh #!/bin/sh exec /bin/gzip -f - >"/var/core/core-$1.$2.gz"

ctrl +d

步骤2:更新核心模式文件

cat > /proc/sys/kernel/core_pattern |/nuova/bin/gen_compress_core.sh %e %p ctrl+d

票数 2
EN

Stack Overflow用户

发布于 2019-11-19 19:23:55

正如其他答案所建议的,Linux kernel /proc/sys/kernel/core_pattern文件是一个很好的起点:http://www.mjmwired.net/kernel/Documentation/sysctl/kernel.txt#141

正如文档所说,您可以指定特殊字符"|“,它将告诉内核将文件输出到脚本。按照建议,您可以使用|/bin/gzip -1 > /var/crash/core-%t-%p-%u.gz作为名称,但是它似乎不适合我。我认为这是因为在我的系统内核中,没有将>字符作为输出,而是可能将它作为参数传递给gzip。

为了避免这个问题,就像其他人建议的那样,您可以在我使用/home//crash/core.sh的某个位置创建您的文件,使用以下命令创建它,将其替换为您的用户。或者,您也可以明显地更改整个路径。

代码语言:javascript
复制
echo -e '#!/bin/bash\nexec /bin/gzip -f - >"/home/<username>/crashes/core-$1-$2-$3-$4-$5.gz"' > ~/crashes/core.sh

现在这个脚本将接受5个输入参数,并将它们连接在一起并添加到core-path中。必须在~/crashes/core.sh中指定完整路径。还可以指定此脚本的位置。现在让我们告诉内核在生成文件时使用带参数的tour可执行文件:

代码语言:javascript
复制
sudo sysctl -w kernel.core_pattern="|/home/<username>/crashes/core.sh %e %p %h %t"

应该再次替换(或整个路径以匹配core.sh脚本的位置和名称)。下一步是崩溃一些程序,让我们创建一个崩溃cpp文件的例子:

代码语言:javascript
复制
int main (){
    int * a = nullptr;
    int b = *a;
}

编译并运行后,有两个选项,我们将看到:

分段故障(核心转储)

或

分段故障

如果我们看到后者,几乎没有可能的原因。

  1. ulimit未设置,ulimit -c应指定内核限制
  2. apport或您的发行版核心转储收集器未运行,这应进行调查further
  3. there是我们编写的脚本中的错误,我建议不要检查一些基本转储路径,以检查其他内容是否不是下面应创建/tmp/

.dump的原因:

sudo sysctl kernel.core_pattern="/tmp/core.dump" -w

我知道这个问题已经有了答案,但我并不清楚为什么它不能“开箱即用”,所以我想总结一下我的发现,希望它能对某些人有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5063295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档