初學者筆記:linux的程式在發生異常情況下,會導致進程down,多數伺服器會設置生成core文件,本人在實際運營過程中發生過進程不斷core,被自動監控拉起,過段時間有core的情況,進而導致磁碟被撐滿,影響服務這裡對core稍作瞭解後core文件的大小限制:ulimit -c是可以改變core的...
初學者筆記:
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