2007年9月13日木曜日

core dumpファイルを吐かせる

■設定確認編
Segmentation faultが起きていたLinuxでcoreファイルを検索。
非効率的だが何処にあるか解らんので、Linuxのディレクトリの一番上へ移動。でそこで「今いるディレクトリ以下にあるcoreという名前をファイルを探す」コマンドを実行
-find . -name core
が、dumpと思われるファイルは引っかからず。なぜだ・・・。

ちょっとLinuxに詳しい友人にメッセ経由で聞いてみると、「core dumpが出来過ぎてHDD圧迫する事があるから吐かない様にしてる事は多いよ。設定で変更出来るはず」というお言葉が。
そこでどこでその設定をしてるか調べてみた所IT Proの記事が見つかり、下記コマンドで出来る様だ。
ulimit -a
んで実行結果の中でcore dumpに関係してそうな値が
core file size (blocks, -c) 0

となっている。ゼロじゃそりゃ吐かないべ・・・。あともう一個コマンド発見
sbin/sysctl -a
実行結果の中で関係してると思われる場所
kernel.core_pattern = core
kernel.core_setuid_ok = 0
kernel.core_uses_pid = 1


これ記事書いてて気付いたけど以下のコマンドだと直に値を見られる見たい。
sysctl kernel.core_pattern
sysctl kernel.core_setuid_ok
sysctl kernel.core_uses_pid




■設定変更編
上記の結果を受けて設定変更をする。変更する場所は
1.kernel.core_setuid_okを1にする。
2.core file sizeを2048blockにする。(2048の値は適当に選んだ)

1を実行するコマンド
sysctl -w kernel.core_setuid_ok=1
2を実行するコマンド
ulimit -c 2048

これでいいはず。あとCoreファイルがはかれる場所も確認しないと。
てかたまたまこんなblogを発見。
ノウアスフィア探検隊:core解析メモ

初期設定ファイルが/etc/sysctl.conf

0 件のコメント: