2

我正在尝试为从我的 rootfs 生成 coredump 文件提供支持,我已经使用“ulimit -c unlimited”命令和“* hard core -1”修改了 /etc/limits 文件,现在当我给 kill -6 $$ 时,期待核心文件生成,但要获得这个核心文件必须明确运行 ulimit -c unlimited 。

但我希望它自动发生,无需在 shell 中再次运行 ulimit -c unlimited 它。

谁能告诉我我必须做出哪些改变才能发生同样的事情

4

1 回答 1

7

您可以从一个程序setrlimit(RLIMIT_CORE, ...)中设置核心文件的最大大小。指定一个无限大小的 pass 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)还有其他占位符如下(取自此处):

%%  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)
于 2013-08-21T12:36:49.703 回答