CoreDump又叫核心转储,是一个程序运行时的环境一个集合包,包含崩溃时的堆栈信息,是一个二进制文件,无法使用记事本打开,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象,主要用来调试。
一、CoreDump文件的生成和大小限制
linux系统more默认关闭coredump文件的生成,因为需要占用一部分系统开销。
检查系统core dump功能是否开启,0为关闭
[root@vsftpd ~]# ulimit -c 0
二、查看详细显示信息
[root@vsftpd ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7200 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 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) 7200 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
三、临时开启CoreDump功能(重启或者重新登录会失效)
[root@vsftpd ~]# ulimit -c unlimited #生成文件大小不受限制 [root@vsftpd ~]# ulimit -c unlimited [root@vsftpd ~]# ulimit -c 1024 #限制生成coredump文件大小为1024K [root@vsftpd ~]# ulimit -c 1024
四、永久开启CoreDump功能,需要修改配置文件/etc/security/limits.conf
[root@vsftpd ~]# more /etc/security/limits.conf * soft core unlimited
五、指定CoreDump文件的名称格式
默认情况下系统生成的CoreDump文件不带其他拓展名,全部命名为core。此时新生成文件会覆盖掉旧的core文件;
CoreDump文件的参数说明
%% 单个%字符
%p dump进程的进程ID
%u dump进程的用户ID
%g dump进程的组ID
%s 导致core dump的信号
%t core dump 的时间
%h 主机名
%e 程序文件名
使core文件名称是否带有pid,配置文件/proc/sys/kernel/core_uses_pid的内容为1,添加pid,0为不添加pid;
[root@vsftpd ~]# more /proc/sys/kernel/core_uses_pid 1
定义core文件的名称格式为core-%e-%p-%t,配置文件默认文件名为core
[root@vsftpd ~]# more /proc/sys/kernel/core_pattern core [root@vsftpd ~]# echo 'core-%e-%p-%t' > /proc/sys/kernel/core_pattern [root@vsftpd ~]# more /proc/sys/kernel/core_pattern core-%e-%p-%t
生成路径:系统默认的core文件生成路径是/var/logs,但/var/logs目录并非系统自带的,系统初始安装默认自带的是/var/log,最终导致该系统出现CoreDump后并没能生成core文件。指定CoreDump文件存在/dump/目录下,格式自定义:
[root@vsftpd ~]# mkdir /dump/ [root@vsftpd ~]# echo '/dump/core-%e-%p-%t' > /proc/sys/kernel/core_pattern [root@vsftpd ~]# more /proc/sys/kernel/core_pattern /dump/core-%e-%p-%t
六、临时关闭CoreDump文件的生成功能
[root@vsftpd ~]# ulimit -c 0 [root@vsftpd ~]# ulimit -c 0
七、永久关闭CoreDump功能,需要修改配置文件/etc/security/limits.conf
[root@vsftpd ~]# more /etc/security/limits.conf # * soft core 0
八、CoreDump未开启导致的问题(Swoole Tracker 3.0)
在php.ini配置swoole_tracker以下信息后
swoole框架启动报错如下:
解决方法:按以上方法启动CoreDump