我试图从我的rootfs提供对coredump文件生成的支持,我已经用“ulimit -c unlimited”命令和“* hard core -1”修改了/ etc / limits文件,现在当我给kill -6 $ $,期望生成核心文件但是要获得这个核心文件必须明确地运行ulimit -c unlimited。
但我想让它自动发生,不需要在shell中再次运行ulimit -c unlimited。
任何人都可以告诉我我必须做出哪些改变
答案 0 :(得分:6)
从程序中,您可以使用setrlimit(RLIMIT_CORE, ...)
设置核心文件的最大大小。要指定无限大小的传递RLIM_INFINITY
。
有关详细信息,请参阅此处:http://manpages.debian.net/cgi-bin/man.cgi?query=getrlimit&sektion=2
使用sysctl
命令可以
sysctl kernel.core_pattern=/var/core/core.%p
让内核在core.<pid>
中创建名为/var/core
的核心。
将kernel.core_pattern=/var/core/core.%p
添加到/etc/sysctl.conf
会使其永久化。 (运行sysctl -p
将您的更改处理为/etc/sysctl.conf
)
除了%p
(对于进程ID),还有其他占位符如下(taken from here):
%% a single % character
%p PID of dumped process
%u (numeric) real UID of dumped process
%g (numeric) real GID of dumped process
%s number of signal causing dump
%t time of dump, expressed as seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC)
%h hostname (same as nodename returned by uname(2))
%e executable filename (without path prefix)
%E pathname of executable, with slashes ('/') replaced by exclamation marks ('!').
%c core file size soft resource limit of crashing process (since Linux 2.6.24)