Linux设置core文件介绍

①ulimit -a查看操作系统limit信息,显示结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
core file size          (blocks, -c) 5120

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 240561

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) 10240

cpu time (seconds, -t) unlimited

max user processes (-u) 1024

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

其中第一行显示的就是core文件的配置信息。

当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core文件记录crash时刻系统信息,包括内存和寄存器信息,用以程序员日后debug时可以使用。这些错误包括段错误、非法指令、总线错误或用户自己生成的退出信息等等。

②设置core文件主要有如下几种方法:

1
vim /etc/profile

添加以下内容:

1
2
3
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
vim /etc/security/limits.conf

注释掉以下内容

1
*               soft    core            0

以上两种方法都是设置禁止系统所有用户产生core文件。
生产环境中,需要对产生的core文件进行调试,因此一般情况下会对core文件进行一些设置。

设置允许某个用户产生core文件,即不限制大小

1
vim ~/.bash_profile

添加下面这行内容:

1
ulimit -c unlimited

③下面是对ulimit这个命令的一些具体描述

ulimit用于shell启动进程所占用的资源,属于shell内建命令

语法格式:ulimit

参数介绍:

-H 设置硬件资源限制。

-S 设置软件资源限制。

-a 显示当前所有的资源限制。

-c size:设置core文件的最大值,单位:blocks

-d size:设置数据段的最大值,单位:kbytes

-f size:设置创建文件的最大值,单位:blocks

-l size:设置在内存中锁定进程的最大值,单位:kbytes

-m size:设置可以使用的常驻内存的最大值,单位:kbytes

-n size:设置内核可以同时打开的文件描述符的最大值,单位:n

-p size:设置管道缓冲区的最大值,单位:kbytes

-s size:设置堆栈的最大值.单位:kbytes

-t size:设置CPU使用时间的最大上限,单位:seconds

-v size:设置虚拟内存的最大值,单位:kbytes