1.生成coredump文件
使用 ulimit -a 查看所有资源限制
sms@sms-vm:~$ 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) 7639
max locked memory (kbytes, -l) 16384
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) 7639
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
core file size可以生成coredump文件的大小
- 0:程序出错时不会产生core文件
- 1024:代表1024k,core文件超出该大小就不能生成了
- unlimited:core文件的大小不受限制
也可以使用ulimit -c查看core file size大小
sms@sms-vm:~$ ulimit -c
unlimited
如果core file size 大小为0,或者想更改生成coredump文件的大小限制
打开 /etc/profile
sudo vi /etc/profile
文件末尾加上
ulimit -c fileSize
fileSize是coredump文件最大限制
例如:
ulimit -c unlimited
生成coredump文件大小没有限制
/etc/profile文件修改完再使用
source /etc/profile
使修改立即生效
ps:
第二次修改的时候,使用 source
报了下面这个错误
-bash: ulimit: core file size: cannot modify limit: Operation not permitted
切换到root用户然后使用source就可以了
2.设置coredump文件名以及保存路径
core dump文件生成时,一般保存在执行程序的位置,默认文件名“core”,如果有新的core文件生成,会覆盖掉之前生成的core文件
进程pid设为文件扩展名
修改 /proc/sys/kernel/core_uses_pid 文件内容为: 1
- 1:添加pid作为扩展名,生成的core文件名称为core.pid
- 0:不添加pid作为扩展名,生成的core文件名称为core
修改文件命令: echo “1” > /proc/sys/kernel/core_uses_pid
修改core文件保存位置和文件名格式
修改文件命令:
echo "/corefile/core_%e_%s_%p" > /proc/sys/kernel/core_pattern
可以将core文件统一生成到/corefile目录下,产生的文件名为core_命令名_信号_pid
以下是参数列表:
- %e - 添加导致产生core的命令名
- %p - 添加pid
- %u - 添加当前uid
- %g - 添加当前gid
- %s - 添加导致产生core的信号,以数字的形式表示,具体数字对应信号含义参见Linux信号列表
- %t - 添加core文件生成时的unix时间
- %h - 添加主机名