当前位置: 首页 > news >正文

docker容器内core dumped却找不到core文件

1. 检查ulimit, 使用命令:

ulimit -a

root@b7c19f6da1e3:/usr# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 63525
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1048576
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

core file size: unlimited, 没问题

2. 检查core文件生成位置+命名方式的系统设置,使用命令:

cat /proc/sys/kernel/core_pattern

root@b7c19f6da1e3:/usr# cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c %d %P %E

core dump被通过管道(|开头表示管道)给apport程序处理了(被截胡了),因此没生成core文件

3. 修改/proc/sys/kernel/core_pattern,使用命令:

echo "core" > /proc/sys/kernel/core_pattern

root@867cf149306a:/usr# echo "core" > /proc/sys/kernel/core_pattern
/proc/sys/kernel/core_pattern: Read-only file system

结果报错只读文件不能修改,看来是权限不够

4. 修改docker容器内root权限

在docker容器内,看似已经使用了root用户,有最大权限,实际还是一个被限制的普通用户。

想要开启高级权限,需要在创建、进入docker容器时,加上--privileged参数,其中:

        a. 如果是用docker run创建启动容器,命令类似于

docker run -it --privileged=true –name containername 

        b. 如果是用docker-compose创建容器,需要在docker-compose.yaml配置文件中加上privileged: true

 1 version: '3.8'2 services:3   myservice:4     container_name: s15     image: service_image:latest6     privileged: true11     volumes:12       - /etc/localtime:/etc/localtime:ro

然后在用docker exec进入时也带上--privileged参数,命令类似于

docker  exec --privileged -w / -it s1 /bin/bash

5. 修改/proc/sys/kernel/core_pattern文件

root@b7c19f6da1e3:/usr# echo "core" > /proc/sys/kernel/core_pattern
root@b7c19f6da1e3:/usr# cat /proc/sys/kernel/core_pattern
core

至此,问题解决,需要注意的是

a. /proc/sys/kernel/core_pattern文件内容如果没带路径(一般都不带相对、绝对路径),core文件会生成在导致core文件的程序相同路径下

b. 可以用%t(时间), %p(pid)来命名core文件

root@b7c19f6da1e3:/btc/coretest# echo "core_%t_%p" > /proc/sys/kernel/core_pattern
root@b7c19f6da1e3:/btc/coretest# cat /proc/sys/kernel/core_pattern
core_%t_%p
root@b7c19f6da1e3:/btc/coretest# ll
total 128
drwxr-xr-x 2 root root   4096 Nov 15 16:45 ./
drwxr-xr-x 1 root root   4096 Nov 15 16:44 ../
-rw------- 1 root root 249856 Nov 15 16:45 core-1700037947-206
-rwxr-xr-x 1 root root   9480 Nov 15 16:45 test*
-rw-r--r-- 1 root root     65 Nov 15 16:45 test.c
root@b7c19f6da1e3:/btc/coretest# ./test 
Segmentation fault (core dumped)
root@b7c19f6da1e3:/btc/coretest# ll
total 236
drwxr-xr-x 2 root root   4096 Nov 15 17:17 ./
drwxr-xr-x 1 root root   4096 Nov 15 16:44 ../
-rw------- 1 root root 249856 Nov 15 16:45 core-1700037947-206
-rw------- 1 root root 249856 Nov 15 17:17 core_1700039869_324
-rwxr-xr-x 1 root root   9480 Nov 15 16:45 test*
-rw-r--r-- 1 root root     65 Nov 15 16:45 test.c

http://www.lryc.cn/news/236068.html

相关文章:

  • ubuntu提高 github下载速度
  • Node.js之path路径模块
  • TCP与UDP协议
  • “ /^A-Z:\\{1,2}^/:\*\?<>\|+\.(jpg|gif|png|bmp)$/i ”这个正则表达式的理解
  • 批量下载Sentinel数据脚本2023
  • lv11 嵌入式开发 ARM指令集中(伪操作与混合编程) 7
  • 北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595
  • 麒麟系统安装找不到安装源!!!!设置基础软件仓库时出错
  • 代码随想录算法训练营第三十九天【动态规划part02】 | 62.不同路径、63. 不同路径 II
  • 鸿蒙4.0开发笔记之DevEco Studio如何使用Previewer窗口预览器(一)
  • 音视频转换软件Permute mac中文板特点介绍
  • 前端uniapp列表下拉到底部加载下一页列表【下拉加载页面/带源码/实战】
  • 超聚变服务器关闭超线程CPU的步骤(完整版)
  • 智能驾驶汽车虚拟仿真视频数据理解(一)
  • 事关Django的静态资源目录设置(Django的setting.py中的三句静态资源(static)目录设置语句分别是什么作用?)
  • Vue.js2+Cesium1.103.0 十四、绘制视锥,并可实时调整视锥姿态
  • 批量替换WordPress文章内图片链接
  • 关于DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC的一些发现
  • MatrixOne 支持多样化生态工具
  • 力扣刷题篇之位运算
  • asp.net core mvc 控制器使用配置
  • Hadoop学习总结(MapRdeuce的词频统计)
  • PPT基础入门
  • Java 语言关键字有哪些
  • Go vs Rust:文件上传性能比较
  • C# NAudio 音频库
  • springcloudalibaba-3
  • 异步复位同步释放与同步复位打拍
  • 使用Python进行二维图像的三维重建
  • go-zero微服务的使用