就我的盒子而言,正在发生一些令人困惑的事情。
以下是/etc/sysctl.conf
中的设置:
kernel.core_pattern = core
kernel.core_uses_pid = 1
在/etc/profile
中,我有这个:
ulimit -S -c unlimited >/dev/null 2>1
我通过查看来验证一切:
cat /proc/sys/kernel/core_pattern
cat /proc/sys/kernel/core_uses_pid
因此,当我们执行ulimit -c
时,它会返回unlimited
的值。
当我们执行ulimit -S -c
时,它会返回值unlimited
。
当我们执行ulimit -H -c
时,它会返回值unlimited
。
当我对正在运行的进程运行kill -6时,我没有得到核心。
当我运行ulimit -c unlimited
并再次启动进程并运行kill -6时,它会生成一个核心。
有人可以解释软限制和硬限制之间的区别吗?
我们应该改变硬限制吗?
我不喜欢这种情况,因为核心有时会产生,有时候不会产生。
即使我更改了limits.conf,我也非常想了解我在做什么。
我需要披露的更多内容是我在RHEL 6环境(x86_64)上运行。
并且有足够的磁盘空间,它不是DAEMON进程或setuid程序。并且文件夹中有足够的权限来创建新文件,并且运行时目录中没有名为core的文件/文件夹。
我已经提出了具体的问题,我希望在这些问题结束之前回答这些问题。这不是主题,因为核心转储对于调试代码问题至关重要。