web-dev-qa-db-ja.com

CentOS6でコアファイルを有効にする方法

CentOS6を実行しているマシンでコアファイルを有効にしようとしています。しかし、私が試したことは何もコアファイルを生成していません…これが私がしたことです:

/etc/security/limits.confに次の2行を追加しました。

*     hard    core    unlimited
*     soft    core    unlimited

/etc/sysconfig/initに次の行を追加しました。

DAEMON_COREFILE_LIMIT='unlimited'

/etc/profileに次の行を追加しました。

ulimit -c unlimited > /dev/null 2>&1

/etc/sysctl.confに次の行を追加しました。

kernel.core_pattern = '/srv/core/%p_%t.core'
fs.suid_dumpable = 1

/srv/coreが存在し、777権限があることを確認しました。 init 6を実行してOSを再起動しました。システムが復旧したら、コアファイルを作成するために次のCスクリプトを実行しました。

#include <sys/types.h>
#include <unistd.h>
#include <signal.h>

int main(int argc, char **argv) {
  kill(getpid(), SIGQUIT);
}

コアファイルは生成されません:(

私は何が欠けているか、間違っているのですか?よろしくお願いします!

2
Kabb5

プログラムがrootとして実行されている場合、追加したlimits.confエントリは適用されません。 「*」は、rootを除くすべてのユーザーに適用されます。

プログラムがrootとして実行されている場合は、以下を追加します。

root     hard    core    unlimited
root     soft    core    unlimited

また、SELinuxがコアダンプの書き込みを妨げていないことを確認してください。

getenforce

SELinuxが実行されている場合は、監査が実行されていることを確認し、コアダンプを取得してから、次の手順を実行します。

grep -i denied /var/log/audit/auditd
2
Aaron

問題はおそらく、パスがcore_patternに引用されていることです。代わりにこれを試してください:

kernel.core_pattern = /srv/core/%p_%t.core
1
Tobias