你的位置:首页 > 操作系统

[操作系统]Linux coredump学习笔记


初学者笔记:
linux的程序在发生异常情况下,会导致进程down,多数服务器会设置生成core文件,本人在实际运营过程中发生过进程不断core,被自动监控拉起,过段时间有core的情况,进而导致磁盘被撑满,影响服务

这里对core稍作了解后

core文件的大小限制:

ulimit -c是可以改变core的文件大小,但遗憾的是他是针对当前终端有效,简单说当退出当前登录时,再次使用ulimit -c时又变成了默认值

彻底改变需要修改配置文件,不同的服务器指向的配置文件可能不能,这里先记录实际接触到的:

/etc/profile:

# if test "$is" != "ash" -a ! -r /etc/initscript; then   ulimit -Sc 10255      # don't create core files#   ulimit -Sd $(ulimit -Hd)#   ulimit -Ss $(ulimit -Hs)#   ulimit -Sm $(ulimit -Hm)# fi

/etc/security/limits.conf:

前面的*代表所有用户,实际也可根据具体用户配置,如root等,

*     soft  core      10240*     hard  core      102400#*        hard  rss       10000#@student    hard  nproc      20#@faculty    soft  nproc      20#@faculty    hard  nproc      50#ftp       hard  nproc      0#@student    -    maxlogins    4

修改该配置文件需注意,要使 limits.conf 文件配置生效,前提必须确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:session required /lib/security/pam_limits.so 

limits.conf是 pam_limits.so的 配置文件,然后/etc/pam.d/下的应用程序调用pam_***.so模块。当用户访问服务器,程序将请求发送到PAM模块,PAM模块根据服务名称在/etc/pam.d目 录下选择一个对应的服务文件,然后根据服务文件的内容选择具体的PAM模块进行处理,上面soft,hard 和 -,其中soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了soft 和hard的值

另外core的存放路径:

root@huang:/data/coredump# cat /proc/sys/kernel/core_patterncoreroot@huang:/data/coredump# echo '/data/coredump/core_%e_%t' > /proc/sys/kernel/core_pattern root@huang:/data/coredump# cat /proc/sys/kernel/core_pattern/data/coredump/core_%e_%t