由于linux下的程序有时候需要根据core文件来判断出错的地方,但是:
/proc/sys/kernel/core/core_pattern 默认内容: core
/proc/sys/kernel/core_uses_pid 默认内容:0
每次都只有一个core,而且新的core会覆盖旧的core,非常不方便,所以,用下面的方式改变默认core的格式。
方法1:临时修改:修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。
/proc/sys/kernel/core_pattern
例:echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern
方法2:永久修改:可以通过在/etc/sysctl.conf文件中,对sysctl变量kernel.core_pattern的设置。
vi /etc/sysctl.conf 然后,在sysctl.conf文件中添加下面两句话:
kernel.core_pattern = /var/core/core_%e_%p
kernel.core_uses_pid = 0
保存后退出。
需要说明的是, /proc/sys/kernel/core_uses_pid。如果这个文件的内容被配置成1,即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID。
可以使用以下命令,使修改结果马上生效。
sysctl –p /etc/sysctl.conf