Linux コアのダンプ場所の設定

Linux Koanodanpu Chang Suono She Ding



Linuxの「コアダンプ」とは?

プロセスが予期せず終了すると、システムに「コア ダンプ」が残されることがよくあります。これに関連するメッセージが含まれています。コアはデバッグ ツールとして機能し、デバッグ情報も含むメモリのイメージです。プログラムをデバッグしたくないユーザーの場合は、コアを削除するだけでかまいません:

$ RM

新しいコアがダンプされると古いコアが上書きされるため、そのままにしておくこともできます。次のコマンドを使用して、コア ダンプを無効にすることもできます。







$ 下降 -c 0

必要に応じて (デバッガーなどを使用して) コア ダンプを生成することも、終了時に自動的に生成することもできます。カーネルは、プログラムが突然終了した結果としてコア ダンプを開始します。これらは、追加の操作のために他のプログラム (systemd-coredump など) に送信される場合があります。



よくあることですが、安定性とトラブルシューティングを向上させるためにデータを収集することと、デバッグ データから機密情報が漏洩するリスクとの間にはトレードオフがあります。



何をカバーしますか?

この記事では、Ubuntu 20.04 OS でコア ダンプの場所を設定する方法について説明します。今すぐ始めましょう。





コア ダンプの生成

まず、コア ダンプを生成する方法を見てみましょう。これには、Linux の kill コマンドを使用します。まず、プロセスの PID を見つけてから、kill シグナルを送信します。たとえば、スリープ プロセスを開始し、その PID でそれを強制終了してみましょう。

$ 睡眠 500

$ 殺す -s シグトラップ $ ( グリップ 睡眠 )



コア ダンプを生成する方法を学習したので、次の後続のセクションで使用できます。

彼らはどこへ行くのか?

コア ダンプ ファイルはデフォルトで core.pid という名前で、アプリケーションの作業ディレクトリに作成されます。ここで、pid はプロセス ID です。

ulimit ツールを使用すると、現在のシェルとそれ以降のシェルのシステム リソース制限を取得または変更できます。コア ファイルのサイズ制限を確認または構成するには、次のコマンドを使用します。

$ 下降 -c

コア ファイルの区切りや切り捨てを避けるために、制限がグローバルに「無制限」に設定されていることを確認してください [1]。これは、/etc/security/limits.conf に次の行を追加することで実行できます。

ルート - コア 無制限

* - コア無制限

ここで、ログアウトして再度ログインし、制限をセッションに適用します。

コア ダンプの場所のカスタマイズ

通常、「sysctl kernel.core_pattern」コマンドまたは「/proc/sys/kernel/core_pattern」を使用して、コア ダンプの場所を設定します。

次のコマンドを入力して、現在のコア パターンの設定を表示します。

$ / プロセス / システム / カーネル / core_pattern

通常、デフォルト値は「core」としてここにリストされています。

「/proc/sys/kernel/core_pattern」を使用してコア ダンプの場所を設定する

「/proc/sys/kernel/core_pattern」ファイルを使用して、一時的にコア ダンプを新しい場所、たとえば /tmp/dumps/core にリダイレクトしてみましょう [2] [3]。次に、次の手順に従います。

ステップ1 .まず、コア ダンプを保存するディレクトリを作成します。

$ mkdir -p / tmp / 投げ捨てる / コア /

ステップ2 .このディレクトリに必要な権限を付与します。

$ chmod a+x / tmp / 投げ捨てる / コア /

ステップ 3 .ここで、一時的にコア ダンプ パスを設定します。

$ エコー 「/tmp/ダンプ/コア/コア」 | | 須藤 ティー / プロセス / システム / カーネル / core_pattern

ここでも、グローバルに ulimit を無制限に設定します。

ここで、以下に示すように、ファイルの名前に他の情報を追加できます。

$ エコー '/tmp/dump/cores/core_%e.%p_%t' | | 須藤 ティー / プロセス / システム / カーネル / core_pattern

ここで使用される各パラメーターは、次のように定義できます。

% と: にとって 実行可能 ファイル 名前

% p: にとって 処理する ID またはピッド。

% t: にとって タイムスタンプの追加

ステップ 4 .次に、「/etc/sysctl.conf」ファイルを変更して、以前の設定を永続的に適用する必要があります。このファイルを開きます:

$ 須藤 ナノ / / sysctl.conf

次に、このファイルに次の行を追加します。

kernel.core_pattern = / tmp / 投げ捨てる / コア /

また、この行の代わりに、これを追加できます。

kernel.core_pattern= '/tmp/dump/cores/core_%e.%p_%t'

やるべきことはそれだけです。ここで、「コア ダンプの生成」セクションで説明したように、コア ダンプを生成します。この後、コアファイルが生成されたかどうかを確認できます。

$ ls -l / tmp / 投げ捨てる / コア /

「Sysctl」コマンドを使用してコア ダンプの場所を設定する

前述のように、同じ目的で sysctl コマンドを使用することもできます。コア ダンプの場所とコア ファイルの形式を変更しましょう。

ステップ1 .新しいディレクトリを作成し、必要な権限を付与します。

$ mkdir -p / tmp / マイダンプ

$ chmod a+rwx / tmp / マイダンプ

ステップ2 .次に、次のコマンドを実行します。

$ 須藤 sysctl -の kernel.core_pattern= / tmp / マイダンプ / 芯_ % と。 % p_ % t

ステップ 3 .ここで、先ほど行ったようにコア ダンプを生成します。この後、コア ファイルが生成されているかどうかを確認します。

$ ls -l / tmp / マイダンプ /

Ubuntu システムでは、多くの場合コア ダンプが Apport に送信されます。 Red Hat ベースのシステムの場合、Automatic Bug Reporting Tool (ABRT) に転送される場合があります。最初は、コア ダンプの場所を構成する際に問題に直面していたため、Ubuntu 20.04 で Apport を完全に無効にする必要がありました。おそらく、これは Red Hat などにも当てはまります。

結論

この記事では、Ubuntu 20.04 OS でコア ダンプの場所をカスタマイズする方法を見てきました。コア ダンプは何が問題なのかを突き止めるのに役立ちますが、機密データの漏えいにはひどいものです。コア ダンプは、不要な場合は無効にし、絶対に必要な場合にのみ有効にする必要があります。このような状況では、一般ユーザーがデータにアクセスできないように、ファイルが安全に保管されていることを確認してください。さらに、決定に関係なく、常に構成をテストして、意図したとおりに動作することを確認する必要があります。

コア ダンプとデフォルト設定は、さまざまなオペレーティング システムによって異なる方法で処理されます。最近では、ほとんどの Linux システムが systemd を採用しており、これによりいくつかの小さなルール調整が行われています。システムの構成方法によっては、コア ダンプの検索が必要になる場合があります。