Linux中如何配置生成core文件

1、查看生成core文件的开关是否开启

ulimit -c ,如果为0,则没有开启;如果为>0的一个数,则表示生成core文件的大小;如果为unlimited,则表示core文件的大小不受限制。

2、如何临时开启/关闭生成core文件功能

ulimit -c [kbytes],设置生成core文件的大小;
ulimit -c 0,不产生core文件;
ulimit -c 100,设置core文件最大为100kbytes;
ulimit -c unlimited,不限制core文件的大小

执行完毕后,可以通过ulimit -c或者ulimit -a查看。

3、永久生效的方法

通过修改用户环境变量、系统环境变量的方式使其永久生效,在.bashrc/.bash_profile、/etc/profile等文件中加入:ulimit -c unlimited。
重启系统生效,或者执行source /etc/profile使配置立即生效。

4、配置core文件的名称、生成路径

修改/etc/sysctl.conf,添加以下2行:

#core文件生成在/home/smart/corefile目录,名称为core-所dump的进程名-所dump的进程pid,如果没有配置目录,则在程序的执行目录生成
kernel.core_pattern=/home/smart/corefile/core-%e-%p 
kernel.core_uses_pid=0

修改完成后,执行sysctl -p /etc/sysctl.conf,使配置立即生效。

core_pattern的命名参数:

%c 转储文件的大小上限
%e 所dump的进程名
%g 所dump的进程的实际组id
%h 主机名
%p 所dump的进程pid
%s 导致本地coredump的信号
%t 转储时刻(从1970年1月1日起计的秒数)
%u 所dump进程的实际用户id

5、验证

kill -s SIGSEGV $$,执行完成后会在/home/smart/corefile目录下生成一个core文件,则表明设置成功。

posted @ 2022-10-19 16:33  21summer  阅读(3164)  评论(0编辑  收藏  举报