linux 关闭core,linux下core文件的控制
linux下默认是关闭core文件的生成,要想生成core文件:一 core文件的生成1、bsh修改/etc/profile文件,该文件应该有类似配置:ulimit -c 20000,注释掉该配置,加以下配置:ulimit-c 1024 (控制core文件最大为1024K)或ulimit -Sc unlimited (不限制core文件的大小)2、csh修改/etc/csh.cshrc,加入以下配
linux下默认是关闭core文件的生成,要想生成core文件:
一 core文件的生成
1、bsh
修改/etc/profile文件,该文件应该有类似配置:ulimit -c 20000,注释掉该配置,加以下配置:
ulimit
-c 1024 (控制core文件最大为1024K)
或
ulimit -Sc unlimited (不限制core文件的大小)
2、csh
修改/etc/csh.cshrc,加入以下配置:
limit coredumpsize 104857600
(控制core文件最大为100M)
csh下只能控制core文件的大小,如果不加控制:
limit coredumpsize
则为默认大小,在我所用的suse linux下,默认为1024K
以上修改均为root用户修改,修改后对所有用户生效,如果只想对某个用户生效,则只需修改该用户相应的配置(profile、cshrc)文件。
二、设置Core Dump文件目录和命名规则
/proc/sys/kernel/core_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0
/proc/sys/kernel/core_pattern可以设置格式化的core文件保存位置或文件名,比如原来文件内容是core-%e
可以这样修改:
echo
"/corefile/core-%e-%p-%t" >
core_pattern
将会控制所产生的core文件会存放到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表:
%p
- insert pid into filename 添加pid
%u - insert current uid into filename
添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal
that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX
time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert
hostname where the coredump happened into filename 添加主机名
%e - insert
coredumping executable name into filename 添加命令名
三、当程序接收到以下UNIX信号会产生core文件:
名字 说明
ANSI C POSIX.1 SVR4 4.3+BSD 缺省动作
SIGABRT
异常终止(abort)
SIGBUS 硬件故障
SIGEMT 硬件故障
SIGFPE 算术异常
SIGILL
非法硬件指令
SIGIOT 硬件故障
SIGQUIT
终端退出符
SIGSEGV 无效存储访问
SIGSYS
无效系统调用SIGABRT 异常终止(abo
SIGTRAP 硬件故障
SIGXCPU
超过CPU限制(setrlimit)
SIGXFSZ 超过文件长度限制(setrlimit)
如果想对某个信号捕获后自己处理,参考例子:
#include
#include
#include
void handler(int iSig)
{
printf( "Received signal %d \n",iSig);
...//自己的处理
exit(0);
}
int main()
{
signal( SIGSEGV, handler );
memset( 0x00,
0x00, 6 );
return 0;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)