コアダンプファイルの場所(および名前)をどのように設定しますか?

コアダンプファイルの場所(および名前)をどのように設定しますか?

私はCentOS 6を使用しており、開発中のアプリケーションのコアダンプを有効にしたいと思います。私は次を置いた:

ulimit -H -c unlimited >/dev/null
ulimit -S -c unlimited >/dev/null

私のbashプロファイルに追加しましたが、まだコアダンプは生成されません(新しい端末で)。

また、すべてのユーザーに対してソフト制限がゼロになるように/etc/security/limits.confを変更しました。

コアファイルの出力位置を設定するには?場所を指定し、ファイル名の一部としてダンプが生成された時間を追加したいですか?

ベストアンサー1

CentOS 6でコアダンプの場所を設定するには、/etc/sysctl.confたとえば、コアダンプが必要な場合は、次のように編集できます/var/crash

kernel.core_pattern=/var/crash/core-%e-%s-%u-%g-%p-%t #corrected spaces before and after =

ここで変数は次のとおりです。

%金利ファイル名です
%Gプロセスが実行されているときの gid です。
%血プロセスのpidです
%Sダンプを引き起こす信号です。
%ティーダンプが発生する時間です。
実行中のプロセスの uid。

また、以下を追加する必要があります。/etc/sysconfig/init

DAEMON_COREFILE_LIMIT='unlimited'

ここで新しい変更を適用します。

$ sysctl -p

しかし、このアプローチには注意が必要です。カーネルパラメータkernel.core_patternが再起動時に常にリセットされ、次の設定でオーバーライドされている場合、値は次から手動で指定されています /etc/sysctl.conf

|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

つまり、abrtd.service起動時kernel.core_patternにシステムをインストールすると自動的に上書きされますabrt-addon-ccpp。この問題を解決する方法は2つあります。

  1. 設定ファイルでDumpLocationオプションを設定します/etc/abrt/abrt.conf。設定ファイルでDumpLocation =を設定して、ターゲット/var/crashディレクトリを指定できます/etc/abrt/abrt.conf。と表示値はsysctl kernel.core_pattern同じですが、実際には下のディレクトリにコアファイルが作成されます/var/crash

また、SELinux を有効にした場合は、以下を実行する必要があります。

    $ semanage fcontext -a -t public_content_rw_t "/var/crash(/.*)?"  
    $ setsebool -P abrt_anon_write 1

最後に再起動してくださいabrtd.service

    $ service abrtd.service restart
  1. abrtd サービスを停止します。kernel.core_pattern上書きしません。 -(テストしたことはありません)。

おすすめ記事