私は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つあります。
- 設定ファイルで
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
- abrtd サービスを停止します。
kernel.core_pattern
上書きしません。 -(テストしたことはありません)。