我在谷歌上搜索后读了几篇文章,但似乎没有什么作用。
我正在使用 Centos 7。
让我解释一下我到目前为止所做的事情。
我一步步遵循
http://www.kibinlabs.com/re-enabling-core-dumps-redhat-7/
之后,我可以得到生成的核心转储,但只有当我手动启动该过程时,无论何时我启动该过程
systemctl start <myprocess>
使用 SEGV 终止后不会生成核心转储
kill -11 <pid>
var/log/messages 显示它收到了信号 SEGV,但我看不到核心转储。
内核核心模式也设置好了。
cat /proc/sys/kernel/core_pattern
/var/lib/coredumps/core-%e-sig%s-user%u-group%g-pid%p-time%t
coredump.conf
cat /etc/sysctl.d/50-coredump.conf
Storage=both
cat /etc/sysctl.d/99-sysctl.conf
fs.suid_dumpable = 1
kernel.core_uses_pid = 1
Storage=both
[root@server01 coredumps]# ls -l /etc/sysctl.d/50-coredump.conf
lrwxrwxrwx 1 root root 26 Aug 6 13:51 /etc/sysctl.d/50-coredump.conf -> /etc/systemd/coredump.conf
答案1
我相信您可能正在尝试杀死设置了 SUID 位的守护进程。
在这种情况下,你需要使用fs.suid_dumpable = 2
要确保的另一件事是保存核心转储的整个路径的权限具有适当的权限。
在您的情况下,这意味着用户需要能够在/var
上执行/var/lib
并且能够写入/var/lib/coredumps
。
这里的用户实际上是拥有被终止进程的用户,而不是终止进程的用户。