現在、/etc/limits.conf
を編集して* soft core unlimited
を編集し、ulimit -c unlimited
を使用してコアダンプを有効にしています。
ただし、core_patternは次のとおりです。
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P
したがって、コアはapportに送信されます。私は気にしませんし、apportをいじりたくありません(そうすると、何かがうまくいかないという記憶があります)。さらに、apportは、クラッシュしたときにバイナリのディレクトリにcore
ファイルをうまく生成します。
Apportがコアを保存する場所、またはそのファイル名を(単純なcore
の代わりに)編集する方法はありますか? apportを無効にしてcore_pattern
を編集することでできることと似ていますが、apportを無効にしません。
Apportに変更を加えると、apportをアップグレードするたびに変更を追加する必要があるため、これを行うためのより良い方法を見つけました。
Linuxでは、コアが生成されるたびに実行するプログラムとしてシェルスクリプトを提供できます。このコアファイル内で、常にapportを呼び出してから、カスタム処理を行うことができます。これには、コアファイルの名前と場所の変更が含まれます。
Apportによって生成されたコアのパスを見つけるには、次を使用できます。
core_dir=realpath '/proc/$1/cwd'
これを行うには、apport pythonファイルを編集できます。コアの場所を変更するのは簡単です:代わりに
core_path = os.path.join(cwd, 'core')
あなたは置くことができます
core_path = os.path.join('my_custom_path, 'core)
名前も同様の方法で変更できます:
core_path += '.' + str(pid)
に
core_path += '.' + str(my_custom_name) + '.' + str(pid)
コアファイルにバイナリ名を追加する場合は、core_patternを使用してapportに渡す必要があることに注意してください。
|/usr/share/apport/apport %p %s %c %d %P %e
上記の%e
がapportスクリプトに実行可能ファイル名を渡すことに注意してください。
スクリプトに変更を加えた後、apportサービスを再起動することを忘れないでください