Unix(またはLinux)に進行中のコアダンプを停止するメカニズムはありますか?


15

(非常に)大きなプロセスがクラッシュしてコアをダンプしており、他の情報(おそらくアサートメッセージ、または何か他のもの)から原因がわかっているとします。

この場合は無駄であるため、コアダンプが完全に生成されるのを停止する方法はありますか?

たとえば、コアダンププロセスの-9を強制終了すると、コアファイルの生成が中断されますか?

明らかに、コアダンプが不要であることを事前に知っている場合は、ulimitを適切に設定するか、OSのさまざまなコアファイル制御ユーティリティを使用できます。

しかし、この質問は「すでに進行中のコアダンプ」段階に関するものです...

(たとえば、私が/programming/18368242/how-to-bypass-a-2tb-core-dump-file-system-limitのリクエスターで あり、5を無駄にしたくないと想像して ください -6 TBのディスク容量:))


Linuxでは、コアダンプの生成を無効にすることができます...それはオプションですか?
krisFR 14年

いいえ-コアダンプは一般に必要ですが、コアを必要とせずに問題を把握している場合、時間/ディスクスペースなどを節約するために、コアダンプを停止する方法を探しています。もちろん、ダンプが完了したらコアを削除することもできます(または、その前にリンクを解除することもできます)が、コアダンプを先に強制終了することができれば、ディスク上のいくつかのギグを占有する理由はありません。
マイクG. 14

特定の条件が満たされたときにプログラムを呼び出すスクリプトで「cat / dev / null> <path_to_core>」を使用できます。そのため、/ proc / <pid>エントリが存在する限り、数秒ごとにスリープして/を実行しますコアファイルへのdev / nullコピー。これによりゼロになります。私は質問の背後にある完全なコンテキストがわからないが、これはうまくいくことができる。
シュルート14

シュルートは、コアのリンクを解除するのと同じ効果がありますよね?ディスクスペースとシステムリソースは、コアが書き込みを完了するまで消費されます。ファイルサイズはduまたはlsでは表示されません。
マイクG.

リソースはい、ただし、これはコア/ログファイルなどの大きなファイルを処理し、PIDを停止しない一般的な方法です。目標が何であるかによって異なります。
シュルート14

回答:


8

一般的に、いいえ、コアダンプを確実に強制終了する方法はありません。

商用* NIXの可能性は(少なくともLinuxでは)あると言われています

可能性は、カーネルの3.xシリーズがファイルの書き込みを中断できるという事実にあります。1つの可能性は、ダンプを行っているスレッドを見つけ、成功するまで繰り返しSIGKILLを送信することです。

このパッチシリーズは、問題をある程度修正します。

他の可能性は、coredump_patternの代替構文を使用することです。マニュアルでは、パターンの代わりに2.6.19以降では、パイプとダンプを処理するプログラム(paramsを使用)を使用できると述べています。Ergoを使用すると、どのダンプをどこに書き込むかを制御できます(/ dev / nullは、不要なコアの明らかな候補です)。

このパッチも少し注目に値します。http//linux.derkeiler.com/Mailing-Lists/Kernel/2010-06/msg00918.html


おかげでゼリドン-それは間違いなくこれまでのところ最高の答えです。
マイクG. 14

私はあなたが配管メカニズムを使用する場合は、あなたがいない何かが保存しておきたいことがわかっている場合だけで、パイプのデータを読むことなく終了することができると思います(壊れたパイプは別の問題を作成しない限り...そのテストする必要があります。)
アレクシスウィルケ

0

このリンクをチェックしてください、役に立つかもしれません

https://publib.boulder.ibm.com/httpserv/ihsdiag/coredumps.html


これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
トムオコナー14

Hamedに感謝しますが、そのリンクには多くの興味深い情報がありますが、私はそれが私の質問に答えるとは思いません(私がそれを逃さない限り-私はまだそれほど目覚めていません:))
マイクG. 14

-1

ulimit -c(bashを使用している場合)を実行してコアダンプサイズを制限できるようです。

参照:https : //askubuntu.com/questions/220905/how-to-remove-limit-on-core-dump-file-size

そして

http://ss64.com/bash/ulimit.html


1
ケリー、OPで述べたように、「もちろん、コアダンプが不要であることを事前に知っていれば、ulimitを適切に設定するか、OSのさまざまなコアファイル制御ユーティリティを使用できます。」非常に大きなタスク(時間/ディスク容量/リソースを節約するため)が既に開始されているコアダンプを停止する方法があるかどうかを確認しようとしています。
マイクG. 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.