本文主要是介绍ulimit -c unlimited设置失败与无法生成core文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题1:
$ ulimit -c unlimited
bash: ulimit: core file size: cannot modify limit: Operation not permitted
$ sudo ulimit -c unlimited
sudo: ulimit: command not found
- ulimit -c 修改次数有限,超出限制就会失败
- ulimit是一个shell内置的命令像cd ,不是一个独立的进程,sudo以二进制方式运行,但是没有ulimit的二进制方式,所以你运行错误。 应该在一个shell中运行
解决方法:可以打开新终端窗口运行或使用root用户运行
问题2:
设置成功,但是一测试问题又来了,为啥还是无法生成core文件
问题分析:
cat /proc/sys/kernel/core_pattern
如果 内容如下:|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g – %E
| 说明程序应该处理核心转储,不会将coredump保存到文件中,这样也就不会生成core文件了, 它可能是在别的路径下生成了
如果未以 | 开头,可能core文件生成到内容指定的路径下去了
解决方案:
指定core文件生成目录。注意:重启系统就会还原
root# echo './core.%e.%p.%t' > /proc/sys/kernel/core_pattern
意思是在当前目录下生成 core.程序名.pid.末尾的时间戳 格式名字的core文件
设置ulimit -c unlimited永久生效
切换成root用户
vim /etc/security/limits.conf
添加如图
sudo reboot
注意: 重启后 /proc/sys/kernel/core_pattern 文件被还原
这篇关于ulimit -c unlimited设置失败与无法生成core文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!