linux core文件路径为什么这么大

linux系统 core 文件太大怎么打开_百度知道
linux系统 core 文件太大怎么打开
我有更好的答案
什么 core 文件?
谁产生的core文件?操作系统?WAS?
服务模块产生的,用GDB调测的时候,报数据过大,当时忘了修改core日志的大小限制。
不了解这行当啊。java的core文件,可以分配足够大的内存堆,前提是主机的内存要有足够大,使用相关的工具打开。
其他类似问题
为您推荐:
linux系统的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁博客MySQL服务惊魂记:Linux磁盘空间不足(Core Dump文件引爆)
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
| 时间 2015 |
作者 红领巾 ]
昨天在更新完文章 《升级博客文章同步微博的插件:正则提取Markdown的图片地址》 后,博客突然无法访问了。
1 查看Nginx的错误日志error.log
惊愕之余,换了多个浏览器打开博客首页无果(一直显示加载状态),最终报内部服务器500的错误。立即查看Nginx服务的错误日志:
[root@typecodes nginx]# vim error.log
[error] 19620#0: *1 FastCGI sent in stderr: "PHP message: SQLSTATE[HY000] [2002] No such file or directory" while reading response header from php-fpm.sock:", host: ""
2 查看的错误日志error.log
从上面的Nginx错误日志中可以看出,可能是MySQL的错误。于是查看MySQL的错误日志error.log,但是当时没注意到下面这条重要错误信息提示: No space left on device 。
#### 查看MySQL的错误日志error.log
[root@typecodes mysql]# ls
[root@typecodes mysql]# vim error.log
[02:47:34] [:47:34] 103 T18:47:11. [ERROR] InnoDB: Error number 28 means 'No space left on device'.
[02:47:34] [:47:34]
[02:47:34] [:47:34] 105 T18:47:11. [Warning] InnoDB: Retry attempts for writing partial data failed.
[02:47:34] [:47:34] 106 T18:47:11. [ERROR] InnoDB: Write to file ./ibtmp1 failed at offset 48576 bytes should have been written, only 1044480 were written.
[02:47:34] [:47:34]
Check that your OS and file system support files of
this size. Check also that the disk is not full or a disk quota
[02:47:34] [:47:34] 107 T18:47:11. [ERROR] InnoDB: Could not set the file size of './ibtmp1'. Probably out of disk space
[02:47:34] [:47:34] 108 T18:47:11. [ERROR] InnoDB: Unable to create the shared innodb_temporary
[02:47:34] [:47:34] 109 T18:47:11. [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
[02:47:34] [:47:34] 110 T18:47:11. [ERROR] Plugin 'InnoDB' init function returned error.
[02:47:34] [:47:34] 111 T18:47:11. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[02:47:34] [:47:34] 112 T18:47:11. [ERROR] Failed to initialize plugins.
[02:47:34] [:47:34] 113 T18:47:11. [ERROR] Aborting
[02:47:34] [:47:34] 114
[02:47:34] [:47:34] 115 T18:47:11. [Note] Binlog end
[02:47:34] [:47:34] 116 T18:47:11. [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
由于本能反应(BZ的CentOS7.1服务器20G系统盘+20G数据盘),服务器不可能会出现磁盘空间不足的问题。结果再一次忽略了 No space left on device 提示。
[root@typecodes mysql]# vim error.log
mysql/data
etting it to a valid, non-empty path.
rc-log) starting as process 22504 ...
c builtins
T18:49:59. [Note] InnoDB: Uses event mutexes
) is used for memory barrier
T18:49:59. [Note] InnoDB: Compressed tables use zlib 1.2.3
T18:49:59. [Note] InnoDB: Number of pools: 1
T18:49:59. [Note] InnoDB: Using CPU crc32 instructions
ze = 128M, instances = 1, chunk size = 128M
e distribution
user: 'TypeCodes_test' host: 'localhost' (Got an error reading communication packets)
user: 'TypeCodes_test' host: 'localhost' (Got an error reading communication packets)
pecodes.log' (errno: 28 - No space left on device)
T14:36:25.1 [ERROR] Retry in 60 secs. Message reprinted in
后面尝试使用一个MySQL测试用户登录数据库,还是报错:
[root@typecodes ~]# mysql -u TypeCodes_test -p
[02:43:32] [:43:32] Enter password:
[02:43:32] [:43:32] ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)
找不到方法,只能先重启一下MySQL服务,结果一直报 The server quit without updating PID file 的错误。又一次查看日志,最终确认从问题 No space left on device 入手。
4 查看磁盘空间信息
根据上面MySQL的 No space left on device 提示,立马使用 df -hl 命令查看当前CentOS7.1服务器的磁盘空间信息。结果很明显,挂载在 /dev/xvdb2 数据盘下面的分区 /mydata 只剩的 12M 的空间了!而mysql得数据文件正好存放在mydata分区中,悲剧!
接着进入到 /mydata 分区,使用命令 du -sh 查看当前目录下各个子目录所占用的空间大小。结果太出乎意料了,竟然是存放Core Dump文件的corefile目录占用了16G的空间!
这才想起在 《CentOS开启coredump转储并生成core文件的配置》 文中,设置了Core Dump文件大小为 unlimited 。日积月累,终于把MySQL搞挂掉了!
先删掉corefile目录下面的大部分Core Dump文件,然后使用命令 ulimit -c 10240 设置coredump file-size为10M。最后,使用命令 service mysqld start 成功启动MySQL服务!看了下时间,从发现问题到解决用了40多分钟,还好只是个个人博客~
本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
一个人如果只遵照他的内心去活着,他要么成为一个疯子,要么成为一个传奇!
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.netlinux core文件大小由什么决定_百度知道
linux core文件大小由什么决定
提问者采纳
你程序占用的内存空间大小,因为他是DUMP下整块内存
提问者评价
呵呵,这个才是我要的
其他类似问题
为您推荐:
其他3条回答
即仅受限于内存,则为core文件最大大小执行ulimit -c的结果即为core文件的大小限制。通过ulimit -c &lt。参考man bash的ulimit小结,通常为0;可设置该大小;NUM&gt,若为其他值
linux内核文件?那不是c++程序,那是c语言啊。
文件大小的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁核心(5)linux man page
核心 core dump 文件
某些的缺省操作是如何使用进程终止并生成 core dump 文件,包含时间的终止一个进程的内存映像的磁盘文件.此图像可以在调试器中使用(例如,gdb(1))的程序在它终止.导致一个进程的列表中可以找到核心转储(7).
一个进程可以在大小上设置其 rlimit_core 软资源限制,以放置一个上限如果它生成的 core dump 文件,则不会收到"core dump"信号;看到getrlimit(2)有关细节.
有各种不同的环境中,不产生 core dump 文件:
核心文件的过程没有写的权限.(缺省情况下,核心文件被称为内核,并在当前工作目录中创建查看下面的命名等.)如果要是 nonwritable 创建它的目录中的核心文件写入都会失败.或者如果存在具有相同名称的文件并没有模式或是不正确的(例如,它是一个目录或一个 symbolic link).
A(水彩风格,regular)想使用 core dump 文件同名的视图已经存在,但有一个以上的硬链接文件.
这个文件列出每个 core dump 文件系统已满;或以或是挂载只读;或其文件系统的配额的用户已经达到了.
core dump 文件是创建不存在的目录中.
在 rlimit_core(core 文件的大小)或rlimit_fsize(文件的大小)资源限制的进程设置为零;看到getrlimit(2)和 shell 的 ulimit 命令的文档(限制以 csh(1)).
启用了二进制由进程执行不具有读权限.
执行一个 set user id 的进程(设置组id)程序,它由一个用户(组)真实用户之外的(组)进程 id .(但是, prctl(2)/proc/sys/fs/suid_dumpable pr_set_dumpable 操作,并在描述文件中的(5).)
命名 core dump 文件
缺省情况下,一个 core dump 文件被命名为核心,但 /proc/sys/kernel/core_pattern 文件(因为 linux 2.6 和2.4.21)可以定义一个模板,用于命名 core dump 文件.模板可以包含%指定当创建核心文件即被下列值:
储的进程的 pid
(数字)储过程的真实 uid
(数字)储过程的真实 uid
数字信号造成 dump
自 epoch 储、快捷键秒,
00 :00 :00 + 0000(utc)
hostname(返回的相同 nodename uname(2))
默认文件名(路径前缀)
核心文件大小的软资源限制的进程释放(因为 linux 2.6.24)
单个%末尾的模板是从内核文件名,正如上面列出的是组合%后跟以外的任何字符成为一个文本部分核心文件名模板中的所有其它字符.此模板可能包含" /'字符,它会被解释为分隔符.该生成的核心文件的最大大小为 128 字节(64字节之前先在内核2.6.19)在该文件中的默认值是"核心".为了向下兼容,所以如果 /proc/sys/kernel/core_pattern 不包含"%p"和/proc/sys/kernel/core_uses_pid(见下)不为零,然后 .pidwill 核心附加到文件名.
自版本 2.4 ,linux 还提供了一个有关基元方法控制的 core dump 文件的名称.如果 /proc/sys/kernel/core_uses_pid 文件包含值0,则只需一个 core dump 文件命名为核心.如果此文件包含一个非零值,然后将该窗体的 core dump 文件包含的进程 id 在 core.pid.
管线核心转储到某个程序
因为内核 2.6.19 , linux 支持备用 /proc/sys/kernel/core_pattern 的语法文件.如果这个文件是一个管道符号(|),然后其余部分都被解释为要执行的程序.而写入磁盘文件,给出的 core dump 是作为标准输入到程序中.注意以下几点:
必须指定使用一个绝对路径名的程序(路径名或根目录(/ )), 和必须紧跟在" |'字符.
进程来运行程序运行作为用户和组创建根.
可以提供给程序的命令行参数.(因为内核 2.6.24), 用空格分隔(多达总线 128 字节长度的).
上面列出的命令行参数可以包含以下任何%说明符例如,要将被输出的进程的 pid ,在一个参数中指定%p
控制哪些映射时写入 core dump
因为内核 2.6.23 .linux 特定 /proc/pid/coredump_filter 文件可以用于控制哪些内存段写入到核心已执行的事件,一个 core dump dump 文件与相应进程的进程 id .
该文件是一个位掩码中的值类型的内存映射(看到mmap(2)).如果一个内存映射中的相应位则是在遮罩,然后输出;否则,它们就不会被输出.该文件中的位具有以下含义:
export 匿名映射的.
dump 匿名共享的映射.
dump 文件的备份专用的映射.
dump 文件备份共享的映射.
bit 4(因为 linux 2.6.24)
dump elf 头
bit 5(因为 linux 2.6.28)
dump 专用页面了.
位7(因为 linux 2.6.28)
储共享页面了.
缺省情况下,该位被设置 :0 ,1,4(如果启用 config_core_dump_default_elf_headers 内核配置选项)此文件将显示以十六进制的值,以及5.(默认值为因此显示为 34 .)
内存映射 i/o 页面如帧缓冲从不输出.虚拟和 dso 页总是输出.无论 coredump_filter .
创建子进程(2)继承了其父的 coredump_filter 值;整个 coredump_filter 值被保留 php-fpm.log.(2).
它可以在父 shell 之前运行一个程序,例如可用于设置 coredump_filter :
0x7&/proc/self/coredump_filter
$ ./some_program
此文件只是专用 config_elf_core 配置选项提供的内核.
在 gdb(1)gcore 命令可以用于获取一个运行进程的 core dump
如果编译器进程(或者,更加精确.一个进程被创建和 clone_vm 标志与其他进程共享的内存的克隆(2))core,然后进程 id 始终附加到内核文件名,除非已包括在 filename %p的规范在 /proc/sys/kernel/core_pattern 其他地方的进程id(这主要是当使用 locales ,其中每个线程的实现进程的 pid .)
下面的程序可以在 /proc/sys/kernel/core_pattern 用于演示使用管道的语法文件.下面的 shell 会话说明如何使用这个程序(编译为一个名为 core_pattern_pipe_test):
$ cc o core_pattern_pipe_test
core_pattern_pipe_test.c
# echo"| $ pwd/core_pattern_pipe_test
gid ==%u%p%g sig =%s"&
/proc/sys/kernel/core_pattern
^#类型控制反斜线
退出(核心输出)
argc[1]=&20575&
dump 字节的总数 :282624
/ *core_pattern_pipe_test.c
#定义 _gnu_source
# include&&a href="http://linux.die.net/include/sys/stat.h" rel="nofollow"&sys/stat.h&
# include&&a href="http://linux.die.net/include/fcntl.h" rel="nofollow"&fcntl.h&
# include&&a href="http://linux.die.net/include/limits.h" rel="nofollow"&limits.h&
# include&&a href="http://linux.die.net/include/3.3.3" rel="nofollow"&3.3.3&
# include&&a href="http://linux.die.net/include/stdlib.h" rel="nofollow"&stdlib.h&
# include&&a href="http://linux.die.net/include/清单2" rel="nofollow"&清单2&
#定义 buf_size
主(int argc , char
buf[buf_size];
char 两个[path_max];
/*以我们的当前工作目录
释放过程 */
snprintf(两个, path_max ,"/proc/ % s/cwd", argv[1]);
chdir(两个);
/*将输出写入文件""目录下的* ./
fp = fopen ( )("+ ","w");
如果(fp== null)
退出(exit_failure);
/*显示指定给 core_pattern 命令行参数.
管道程序 */
的(fp,"argc =%dn", argc);
对于(j=0 ;j0)
的(fp, core
dump"总字节 :% dn", tox);
退出(exit_success);
(1), (1), (2), (2), (2), (2), (5), (5), (7), (7)[摘要:因为下的顺序偶然候须要依据core文件去判别失足的中央,然则:
/proc/sys/kernel/core/core_pattern 默许内容: core
/proc/sys/kernel/core_uses_pid 默许内容:0
由于linux下的有时候需要根据core文件来判断出错的地方,但是:
/proc/sys/kernel/core/core_pattern 默认内容: core
/proc/sys/kernel/core_uses_pid 默认内容:0
每次都只有一个core,而且新的core会覆盖旧的core,非常不方便,所以,用下面的方式改变默认core的格式。
方法1:临时修改:修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。
/proc/sys/kernel/core_pattern
例:echo ‘/var/log/%e.core.%p’ & /proc/sys/kernel/core_pattern
方法2:永久修改:可以通过在/etc/sysctl.conf文件中,对sysctl变量kernel.core_pattern的设置。
vi /etc/sysctl.conf 然后,在sysctl.conf文件中添加下面两句话:
kernel.core_pattern = /var/core/core_%e_%p
kernel.core_uses_pid = 0
保存后退出。
需要说明的是, /proc/sys/kernel/core_uses_pid。如果这个文件的内容被配置成1,即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID。
可以使用以下命令,使修改结果马上生效。
sysctl –p /etc/sysctl.conf}

我要回帖

更多关于 linux的core文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信