linux core文件相关设置
·
1. 给linux服务器配置生成core文件
1.1 通用操作 应用程序设置
- 依次执行如下命令,让程序core时能在指定位置产生coredump文件
- 设置全局有效的ulimit
- 设置coredump文件生成目录与文件名
- 参考命令如下
# 设置全局有效的ulimit -c unlimited
echo "ulimit -c unlimited" >> /etc/profile
source /etc/profile
# 设置coredump文件生成的目录与文件名
echo "/home/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
1.2 ubuntu服务的core设置 服务设置
- 当把某些应用程序,升级为ubuntu的服务后,其core设置按通用设置有时不生效
- 可以设置"服务.service"文件
- 一般路径为:/usr/lib/systemd/system/
- 修改LimitCORE为infinity,没有则添加
- 修改LimitNOFILE为65536或更大值比如1048576,没有则添加
[Service]
Type=simple
LimitCORE=infinity
LimitNOFILE=65536
Restart=always
ExecStart=/home/so/login_server.out
1.3 查看特定进程的core设置
- cat /proc/$pid/limits
- 里面的core file size,都是unlimited则能正常产生core文件
- 如果应用程序或服务,查看后发现没有unlimited,那么重复1.1-1.2
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 127674 127674 processes
Max open files 1048576 1048576 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 127674 127674 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
1.4 关闭apport服务
- ubuntu 环境下,会影响core的生成
- 根据网上资料,我们关闭这个服务
systemctl disable apport
systemctl stop apport
2. core文件没有生成的解决方法
- 进程莫名掉线,却没有core文件产生
- 确定core了,但因为unlimit -c 为默认值0而没有生成
应用程序 - 确定core了,但因为服务.service没有设置而没有生成
服务 - 确定core了,但因为ubuntu的apport服务开启而没有生成
ubuntu
- 确定core了,但因为unlimit -c 为默认值0而没有生成
3.找不到core文件的方法
- 找不到coredump文件
- 查看core文件生成的目录:可以查看
/etc/sysctl.conf文件或/proc/sys/kernel/core_pattern文件 - 根据core文件生成的文件名即core_pattern文件,配合find命令查找
- 查看core文件生成的目录:可以查看
4.ulimit命令
- 系统默认的coredump文件大小为0,即不会转存coredump文件
/home/# ulimit -c
0
- 修改coredump文件大小为unlimited,就能正常转存coredump文件
/home# ulimit -c
unlimited
5.主动输出coredump
- 测试用:除0,产生coredump;给地址0赋值,产生coredump
segmentfault - 利用abort()机制,产生coredump;
abort
6.参考
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)