1

在 MIPS 平台上试过这个:

> uname -a
Linux (none) 2.6.29 #2 Mon Jan 14 13:26:04 PST 2013 mips GNU/Linux
> ulimit -c unlimited
> which gzip
/bin/gzip
> echo "|/bin/gzip - > /home/core-%t-%s-%e.gz" > /proc/sys/kernel/core_pattern
> ./fault
hello there
Segmentation fault (core dumped)
> ls /home/core*.gz
ls: /home/core*: No such file or directory

即管道到程序不起作用。如果我指定一个文件:

> echo "/home/core-%t-%s-%e" > /proc/sys/kernel/core_pattern

然后它工作。我错过了什么?

4

5 回答 5

5

也许它失败了,因为内核没有运行任何 shell,而是尝试执行一个程序。尝试使用脚本中的重定向包装 gzip 调用并使用该脚本。

于 2013-01-16T12:05:43.973 回答
1

在这里解决了:http ://www.linuxquestions.org/questions/showthread.php?p=4871150#post4871150 感谢millgatesydroneaud

于 2013-01-17T14:19:05.737 回答
0

仅仅包含在脚本中对我不起作用,我还必须在 core.sh 中指定正确的 shell 环境

root@fredy:/data/cores# cat /usr/local/sbin/core.sh
#!/bin/sh
exec /usr/bin/pigz -f - >"/data/cores/core-$1-$2-$3-$4-$5.gz"

root@fredy:/data/cores# cat /proc/sys/kernel/core_pattern
|/usr/local/sbin/core.sh %e %p %h %s %t
于 2018-01-12T18:01:34.013 回答
0

稍微改进了埃里克的回答:

sysctl -w kernel.core_pattern='|/bin/sh -c $@ -- eval exec gzip --fast > /var/crash/core-%e.%p.gz'

确实不需要将外壳保存为单独的文件。在 CentOS-7.7 上检查。

于 2020-05-26T16:16:14.360 回答
-1

这对我有用,应该是公认的答案。不是每个人都有能力包装在一个单独的脚本中。

echo "|/bin/bash -c \"\$@\" -- eval gzip > /tme/core.%E.%p.%t.gz" > /proc/sys/kernel/core_pattern
于 2017-10-22T07:58:37.767 回答