通常情况下,只要设置了ulimit -c unlimited,在程序崩溃后就会在当前目录下生成core文件,但最近发现在有的机器上,即使设置了上述参数也不会生成core文件。网上有人总结出一般问题出在下面四个方面:
在下列条件下不产生core文件:
( a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;
( b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;
a,b可以通过设置/proc/sys/kernel/suid_dumpable来改变,这样suid的也可以产生core文件
( c )用户没有写当前工作目录的许可权;
( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。
通过查看权限和文件大小,均没有问题。
1.因为使用的nginx,在nginx中添加参数:
worker_rlimit_core 500m;
可以生成core文件。
2.又测试了一下在 /etc/profile中添加:
ulimit -c unlimited
也可以生成core文件。
结论:直接运行ulimit -c unlimited有时会不生效。