Linux で top コマンドの出力をファイルに保存する方法

LinuxLinuxBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

top コマンドは Linux における強力なシステム監視ツールで、実行中のプロセスとそのリソース使用率に関するリアルタイム情報を提供します。このチュートリアルでは、top コマンドの理解、それとの対話、および top コマンドのワークフローの自動化を通じて、Linux システムを効果的に監視および管理する方法を案内します。

top コマンドの理解

top コマンドは Linux における強力なシステム監視ユーティリティで、システム上で実行中のプロセスに関するリアルタイム情報を提供します。これはシステム管理者や開発者がシステムのリソース使用率とパフォーマンスを理解するための重要なツールです。

top コマンドは、CPU 使用率、メモリ使用率、またはその他の基準でソートされた実行中のプロセスのリストを表示します。各プロセスに関する詳細情報、プロセス ID (PID)、ユーザー、CPU およびメモリ使用率、その他の関連メトリクスを提供します。

top コマンドの主な使用例の 1 つは、システム上でパフォーマンスの問題を引き起こしている可能性のあるリソース集中型のプロセスを特定することです。実行中のプロセスの CPU およびメモリ使用率を監視することで、最も多くのリソースを消費しているプロセスをすばやく特定し、そのパフォーマンスを最適化するための適切なアクションを取ったり、必要に応じてそれらを終了させたりすることができます。

以下は、Ubuntu 22.04 システムで top コマンドを使用する方法の例です。

$ top

これにより、デフォルトの top コマンド出力が表示され、以下の情報が含まれます。

  • 稼働時間 (Uptime): システムが最後に再起動されてからの稼働時間。
  • タスク (Tasks): 実行中、休止中、およびその他のプロセスの数。
  • CPU 使用率: 異なるプロセスによる CPU 使用率の割合。
  • メモリ使用率: 使用されている物理メモリとスワップ領域の量。
  • プロセスリスト: デフォルトでは CPU 使用率でソートされた実行中のプロセスのリスト。

1 を押してコアごとの CPU 使用率を表示したり、m を押してメモリ使用率でソートしたり、p を押してプロセス ID でソートしたりするなど、さまざまなキーを押すことで top コマンドの出力をカスタマイズすることができます。

top コマンドは、システム全体のパフォーマンスを理解し、潜在的なボトルネックやリソース集中型のプロセスを特定するための重要なツールです。top コマンドを習得することで、Linux システムを効果的に監視および管理することができます。

top コマンドとの対話

top コマンドは、出力と動作をカスタマイズするための幅広いオプションとショートカットを提供します。これらの対話方法を理解することで、システムのプロセスを効果的に監視および管理することができます。

top コマンドの操作

top コマンドが実行されているとき、以下のキーボードショートカットを使用して、プロセスリストを操作し、対話することができます。

  • : プロセスリスト内で選択を上下に移動します。
  • k: 選択されたプロセスを終了します。
  • d: 更新間隔を変更します。
  • f: プロセスリストに表示するフィールドをカスタマイズします。
  • o: 特定のフィールドでプロセスリストをソートします。
  • 1: 個々の CPU 使用率の表示を切り替えます。
  • m: メモリ使用率でプロセスリストをソートします。
  • p: CPU 使用率でプロセスリストをソートします。
  • q: top コマンドを終了します。

top コマンド出力のカスタマイズ

f キーを押して「フィールド (Fields)」メニューに入ることで、top コマンドの出力をカスタマイズすることができます。これにより、プロセスリストに表示する列を選択することができます。以下のキーを使用してフィールドを操作および選択することができます。

  • Space: フィールドの選択を切り替えます。
  • a: すべてのフィールドを選択します。
  • d: すべてのフィールドの選択を解除します。
  • <>: 選択されたフィールドを表示内で左右に移動します。
  • Enter: フィールドの選択を保存し、メインの top 表示に戻ります。

プロセスリストのソート

top コマンドでは、CPU 使用率、メモリ使用率、またはプロセス ID など、さまざまな基準でプロセスリストをソートすることができます。以下のキーを使用してプロセスリストをソートすることができます。

  • o: 「ソートフィールド (Sort field)」メニューを開きます。
  • : 利用可能なソートフィールドを移動します。
  • Space: ソート順(昇順または降順)を切り替えます。
  • Enter: 選択されたソートフィールドを適用し、メインの top 表示に戻ります。

これらの top コマンドとの対話方法を習得することで、Ubuntu 22.04 システム上のシステムのプロセスを効率的に監視および管理することができます。

top コマンドのワークフローの自動化

top コマンドはシステムプロセスを監視するための強力な対話型インターフェイスを提供しますが、その使用を自動化したりスクリプト化したい場合もあります。これは、レポートの生成、アラートのトリガー、または top コマンドをより大規模なシステム管理ワークフローに統合する場合に特に有用です。

top コマンドの出力のキャプチャ

top コマンドを自動化する 1 つの方法は、その出力をキャプチャしてファイルに保存するか、さらなる処理のために他のコマンドに渡すことです。Ubuntu 22.04 システムでは、以下のコマンドを使用してこれを行うことができます。

top -b -n 1 > top_output.txt

-b オプションは top に「バッチ」モードで実行するよう指示します。これは、対話的に実行するのではなく、プロセス情報を出力してから終了することを意味します。-n 1 オプションは top に 1 回だけ実行するよう指示し、現在のシステム状態のスナップショットをキャプチャします。

その後、保存された top_output.txt ファイルをさらなる分析や他のツールやスクリプトとの統合に使用することができます。

top コマンドのワークフローのスクリプト化

自動化をさらに進めるために、top コマンドを活用してより複雑なタスクを実行するシェルスクリプトを作成することができます。たとえば、以下のようなスクリプトを書くことができます。

  1. top コマンドの出力をファイルにキャプチャします。
  2. 出力を解析して、最も多くのリソースを消費しているプロセスを特定します。
  3. 特定のしきい値を超えた場合にアラートまたは通知を送信します。
  4. 特定のプロセスを自動的に終了させるか、その優先度を調整します。

以下は、このワークフローを示すサンプルスクリプトです。

#!/bin/bash

## Capture top command output
top -b -n 1 > top_output.txt

## Parse the output to identify top CPU-consuming processes
top_cpu_processes=$(cat top_output.txt | awk 'NR>7{print $1, $9}' | sort -nr | head -n 5)

## Check if any process is consuming more than 20% CPU
if echo "$top_cpu_processes" | awk '{if ($2 > 20) print $1}'; then
  echo "Alert: High CPU usage detected. Top CPU-consuming processes:"
  echo "$top_cpu_processes"
  ## Add your alert/notification logic here
fi

top コマンドのワークフローを自動化することで、Ubuntu 22.04 システム上の特定のニーズに合わせた、より堅牢で積極的なシステム監視および管理ソリューションを作成することができます。

まとめ

top コマンドは、システム管理者や開発者が Linux システムのリソース使用率とパフォーマンスを理解するための重要なツールです。top コマンドを習得することで、リソース集中型のプロセスを特定し、システムパフォーマンスを最適化し、監視ワークフローを自動化してシステム管理タスクを合理化することができます。このチュートリアルでは、top コマンドの基本機能の理解からその使用の自動化まで、包括的な概要を提供し、あなたが Linux システムのパフォーマンスを効果的に監視および最適化するための知識を備えることができるようにしました。