メニュー 閉じる

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ディレクトリの配下にコアダンプを出力します。

コメントを残す