linux 核心转储到管道失败

rekjcdws  于 2022-11-02  发布在  Linux
关注(0)|答案(5)|浏览(305)

已在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

那就成功了,我错过了什么

r7xajy2e

r7xajy2e1#

可能是因为内核没有运行任何shell,而是试图执行一个程序,所以它失败了。尝试将gzip调用与重定向 Package 在一个脚本中,并使用该脚本。

qjp7pelc

qjp7pelc2#

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

ldioqlga

ldioqlga3#

仅仅 Package 在脚本中对我来说不起作用,我还必须在www.example.com中指定适当的shell环境core.sh

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
8yparm6h

8yparm6h4#

何鸿的回答稍有改进:

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

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

6tr1vspr

6tr1vspr5#

这对我来说很有效,应该是可以接受的答案。并不是每个人都有能力 Package 在一个单独的脚本中。

echo "|/bin/bash -c \"\$@\" -- eval gzip > /tme/core.%E.%p.%t.gz" > /proc/sys/kernel/core_pattern

相关问题