コアダンプ設定
1.コアダンプ設定
■[Linux] coreファイルについて
http://qiita.com/suzutsuki0220/items/aa84d7e2e8f37e867f3d
システム起動時に起動するプロセスで、常にcoreファイルを出力するようにしたい場合
initスクリプト(/etc/init.d/XXXX)で /etc/rc.d/init.d/functions を読み込む前に以下の行を追加する
DAEMON_COREFILE_LIMIT=unlimited
※ /etc/rc.d/init.d/functions の中で DAEMON_COREFILE_LIMIT の値でulimitを実行するようになっている。
functionsのスクリプトが無い環境の場合は、initスクリプトの中でulimitコマンドを実行するようにしてください
■ulimitの設定をOS再起動後も各デーモンに反映させる
http://tsunokawa.hatenablog.com/entry/20130515/p1
CentOS6系
/etc/sysconfig/init
2.デーモン側でコアダンプさせる方法
1のやり方とは別方法になるが、デーモン側でコアダンプさせる方法もある。
#include <sys/resource.h> #include <sys/prctl.h> struct rlimit lmtbuff; ret = getrlimit(RLIMIT_CORE, &lmtbuff); if (!ret) { syslog(LOG_INFO, "INFO! [debug] rlimit max=[%lu] cur=[%lu].", lmtbuff.rlim_max, lmtbuff.rlim_cur); if ((lmtbuff.rlim_max != RLIM_INFINITY) || (lmtbuff.rlim_cur != RLIM_INFINITY)) { ret = setrlimit(RLIMIT_CORE, &lmtbuff); if (ret){ syslog(LOG_INFO, "INFO! [debug] setrlimit failure. (%s)", strerror(errno)); } } } else { syslog(LOG_INFO, "INFO! [debug] getrlimit failure. (%s)", strerror(errno)); } ret = prctl(PR_SET_DUMPABLE, 1); if (ret){ syslog(LOG_INFO, "INFO! [debug] prctl failure. (%s)", strerror(errno)); }