首页 > 系统相关 >linux下core file size设置笔记

linux下core file size设置笔记

时间:2023-01-28 15:47:26浏览次数:63  
标签:core 文件 unlimited 生成 file linux root localhost

现象说明:突然发现一台测试机器的java程序莫名其妙地没了,但是没有core dump!这就需要打开服务器的core文件生成的功能了,(即core dump文件),方便程序调试。 1)core文件简介 core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件,默认生成位置与可执行程序位于同一目录下,文件名为core.***,其中***是某一数字。 2)开启或关闭core文件的生成

查看core文件生成功能是否打开,如下若是0,则表示没有打开。
[root@localhost ~]# ulimit -c
0

临时设置(如下设置2G,单位为kbyte)
如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文 件的时候,gdb会提示错误。
[root@localhost ~]# ulimit -c 4194304 

永久设置
[root@localhost ~]# echo " * soft core 4194304" >> /etc/security/limits.conf
[root@localhost ~]# echo " * hard core 4194304" >> /etc/security/limits.conf 

[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 4194304
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15189
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
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) 102400
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

若ulimit -c unlimited,则表示core文件的大小不受限制
[root@localhost ~]# ulimit -c unlimited

3)core文件的使用

在core文件所在目录下键入:
[root@localhost ~]# gdb -c core   (-c指定core文件)
它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等

如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:
[root@localhost ~]# gdb -c core MyServer

4)产生core文件的测试

直接输入指令:
[root@localhost ~]# kill -s SIGSEGV $$

扩展:
ulimint -a 用来显示当前的各种用户进程限制

Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况,
设置个Linux用户的最大进程数,一些需要设置为无限制:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited

5)core文件的名称和生成路径

core文件生成路径:
输入可执行文件运行命令的同一路径下。

若系统生成的core文件不带其它任何扩展名称,则全部命名为core。新的core文件生成将覆盖原来的core文件。

1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,
生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。
可通过以下命令修改此文件:
# echo "1" > /proc/sys/kernel/core_uses_pid

2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
可通过以下命令修改此文件,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
# echo "/corefile/core-%e-%p-%t" > core_pattern

以下是参数列表:
    %p - insert pid into filename 添加pid
    %u - insert current uid into filename 添加当前uid
    %g - insert current gid into filename 添加当前gid
    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加命令名

标签:core,文件,unlimited,生成,file,linux,root,localhost
From: https://www.cnblogs.com/lidabo/p/17070393.html

相关文章

  • linux yum 命令错误常见记录
    [root@localhost~]#wget-O/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo......
  • 使用备份和还原将 SQL Server 数据库从 Windows 迁移到 Linux
    建议使用SQLServer的备份和还原功能将数据库从Windows上的SQLServer迁移到Linux上的SQLServer。在本教程中,将逐步完成使用备份和还原方法将数据库迁移到Linu......
  • Linux系统编程-文件IO
    文件IO标准库IO函数和linux系统调用IO函数的区别:标准C库的文件IO函数是跨平台的,在不同的平台上调用不同的系统API标准C库的IO函数有缓冲区,而linux系统调用的没有缓......
  • 追core笔记之五:如何查看一个corrupt stack的core
    接触c以来有很多好奇的问题,其中一类是关于栈的。比如:栈上存储了哪些数据?函数参数怎么传递的?返回值怎么传出去的?从一个函数是怎么跳转到另外一个函数的?为何gdb可以看到函数......
  • linux安装nginx
    一、安装准备(参考https://tech.powereasy.net/cpzsk/wzfwqwlaq/content_23804)1. 离线安装需要依赖GCC,通过以下命令可以检查GCC是否安装gcc–version银河麒麟是系统默......
  • DELL OpenManage Server Administrator (OMSA) for Linux安装
    1.下载和安装软件包从Dell官网(选择对应的机器和操作系统版本)下载DellOpenManageServerAdministrator软件包: 以下步骤是在DellR730和redhat7.5上运行的案例:1.使......
  • linux基本命令
    tail-1000fxx.out  实时查看文件catxx.out 查看文件more查看全部内容pwd 查看当前位置rm删除 rm-rf删除任何文件touch 创建文件grep过滤 参考:......
  • linux基础设置
    1、修改主机hostnamevi/etc/hostname修改hostsvi/etc/hosts192.168.10.201cdh201192.168.10.202cdh202192.168.10.203cdh203192.168.10.204cdh204重启电......
  • Linux find 命令
    Linuxfind命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与......
  • netstat 网络连接(Linux)
    netstat网络连接(Linux)一、前言基于tcp或udp的应用程序启动后,想要查看程序对应的端口号是否打开。netstat是一个告诉我们操作系统中所有tcp/udp/unixsocket连接状......