ルートなしで特定のユーザーまたはシェルセッションのコアダンプを無効にします。

ルートなしで特定のユーザーまたはシェルセッションのコアダンプを無効にします。

私は大規模なC++プロジェクトを進めています。テスト時にメインプロセスからコアをダンプすることがよくあります。これにより、保存され、systemd有用なディスク領域を占める興味深いコアダンプが大量に生成されます。

Linuxで実行している場合、特定のユーザーに対して一時的にコアダンプ履歴を無効にすることはできますか?systemdそれとも、特定のttyまたは特定のシェルセッションに対してのみ優れていますか?

ユーザーがコアを頻繁にダンプするプログラムを実行し、ルート介入なしにディスク容量を埋めたくない場合は、コアダンプロギングを無効にするオプションが必要であることが合理的です。

答え1

/etc/profile行を編集して追加しましたか?

ulimit -c 0

これで?ルートでない場合は、人々にこのコマンドを手動で実行するように指示できます。

注:ほとんどのLinuxディストリビューションはデフォルトでコアダンプ制限を0に設定します。

ulimit -c unlimited

あなたの殻に。

このulimitコマンドは、setrlimit()すべての子プロセスに継承されたプロセスの設定を設定するシステムコールを内部的に呼び出します。setrlimit()シェルだけでなく、すべてのプログラムから呼び出すことができます。

理論的には、すべての子供がこれらの設定を変更し、新しい継承系統を作成できます。したがって、値を再変更するために途中でシェルが呼び出されないようにしてください。たとえば、呼び出しがシェルの起動スクリプトの1つにある場合、ulimitこれが発生する可能性があります。

答え2

systemd-coredump許可された回答は、sysctlパラメータのパイプを介して使用されるシステムでは機能しませんkernel.core_pattern。 (@textshellがコメントに述べたように)この場合、カーネルは技術的にファイルに書き込まないので、コアファイルサイズの制限に従わないことに注意してください。

systemd-coredumpシステムでコアダンプを回避するには、設定ファイルを次の場所に配置します/etc/systemd/coredump.conf.d/no-corefiles.conf

[Coredump]
Storage=none

この構成は、次に systemd-coredump がコアを処理するために実行されるときに適用されます。このアプローチの付随的な利点は、追跡がまだcoredumpctl

関連情報