web-dev-qa-db-ja.com

apportを無効にせずにコアダンプパターンを編集する方法

現在、/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を無効にしません。

6
coyotte508

Apportに変更を加えると、apportをアップグレードするたびに変更を追加する必要があるため、これを行うためのより良い方法を見つけました。

Linuxでは、コアが生成されるたびに実行するプログラムとしてシェルスクリプトを提供できます。このコアファイル内で、常にapportを呼び出してから、カスタム処理を行うことができます。これには、コアファイルの名前と場所の変更が含まれます。

Apportによって生成されたコアのパスを見つけるには、次を使用できます。

core_dir=realpath '/proc/$1/cwd'
1
Abhishek Jain

これを行うには、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サービスを再起動することを忘れないでください

3
Abhishek Jain