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 を採用しており、これによりいくつかの小さなルール調整が行われています。システムの構成方法によっては、コア ダンプの検索が必要になる場合があります。