CentOSではデフォルトでコアダンプが吐かれないので吐くように設定する
CentOSのデフォルトでは、プロセスがクラッシュした際にコアダンプが出力されません。
もし何らかの製品で、セグメンテーション違反によりプロセスが頻繁に強制終了するような事態が発生し、サポートへ問い合わせをしなければならない場合、コアダンプが必要となる場合があります。
コアダンプの出力設定
コアダンプを吐く?ように設定する場合は、以下の設定値を変更しOSを再起動します。
# vi /etc/systemd/system.conf .. (snip) .. DumpCore=yes .. (snip) .. DefaultLimitCORE=infinity .. (snip) ..
DumpCore
行はコメントアウトされているので、コメントアウトを外します。
DefaultLimitCORE
行はコメントアウトされ値が空なので、上記のように設定します。
OSを再起動した後は、忘れずにulimit
の設定も変更しましょう。
# ulimit -a core file size (blocks, -c) 0 .. (snip) .. # ulimit -c unlimited # ulimit -a core file size (blocks, -c) unlimited .. (snip) ..
なおulimit
の設定は再起動すると戻ってしまうため、再起動後も永続的にコアダンプを出力させたい場合はよしなに設定する必要があります。
コアダンプの出力場所
あくまでデフォルト設定となりますが、CentOS7とCentOS8の場合のコアダンプの出力場所を紹介します。
CentOS7の場合
$ cat /proc/sys/kernel/core_pattern core
となっているため、プロセスのカレントディレクトリにcore.<PID>
の形式で出力されます。
CentOS8の場合
$ cat /proc/sys/kernel/core_pattern |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e
となっているため、コアダンプは/usr/lib/systemd/systemd-coredump
に渡されるようです。
systemd-coredump
はデフォルトで、/var/lib/systemd/coredump
ディレクトリの配下にコアダンプを出力します。
最近のコメント