初学者笔记:
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_pattern
core
root@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