这个限制是在/etc/profile里面设置的: ulimit -S -c 0 >/dev/null 2>1 有几种方法可以让系统产生core
文件。第一个方法是修改/etc/profile里面的ulimit命令,如下: ulimit -S -c unlimited >/dev/null 2>1 上面的设置允许系统上的所有用户产生没有文件大小限制的core文件。
如果只需要对部分用户或组开腊明放产生core文件的权限,需要编辑/etc/security/limits.conf文件。例如,所有在"devel"组里面的用户可以产生core文件:#@devel soft core 是core文件的最大块大小。 在/etc/security/limits.conf文件里面有配置参数的详细说明。提示,如果想通过limits.conf里面的设置来控制用户是否 可以产生core文件,需要把/etc/profile里面的ulimits设置注释掉: # No core files by default # ulimit -S -c 0 >/dev/null 2>1 如果应用是通过daemon命令来启动的,编辑/etc/init.d/functions,注释掉ulimit的设置或改变这行: ulimit -S -c 0 >/dev/null 2>1 通过上面的设置,
应用程序者好应该可以产生core文件。如果不能产生core文件,请检查您的应用程序是否拥有正确的uid,在程序执行的时候是否有 使用setuid改变程序的uid。 在红帽企业Linux 3上面, 可以通过下面的命令允许使用setuid的首局铅应用程序产生core文件: echo 1 >/proc/sys/kernel/core_setuid_ok 另外,您也可以在应用程序中添加下面的代码来实现: prctl(PR_SET_DUMPABLE, 1)默认情况下,core文件会创建在应用程序的工作目录下。如果需要针对当前用户一直生效,那么需要在 ~/.bash_profile 追加:袜嫌
如果需要针对所有用户生效,那么需要在 /etc/profile 追加:
然后再对应执行 source ~/.bash_profile 或者 source /etc/profile
测试:
编译运行,然后键盘敲 Ctrl + \,会发现当前目录生成了core文件。
在 /proc/sys/kernel/core_pattern 可以设置格式化的core文件保存位置和文件名。
比如: core-%e-%p-%t 表示慎举在当前目录生成 "core-命令-pid-时间戳" 为文件名的core文件
比如: /cfg/core-%e-%p-%t 表示在/cfg下生成 "core-命告孝手令-pid-时间戳" 为文件名的core文件
注意: /proc/sys/kernel/core_pattern 不能直接编辑,可以用 echo core-%e-%p-%t >/proc/sys/kernel/core_pattern
评论列表(0条)