はじめに
Linux ユーザーやシステム管理者にとって、システムプロセスを監視することは重要なスキルです。どのプロセスが実行されているか、それらがどのようにリソースを消費しているかを理解することで、システムの安定性とパフォーマンスを維持することができます。
この実験では、Linux システムプロセスのリアルタイム監視に強力なツールである top コマンドの使い方を学びます。top コマンドは、CPU 使用率、メモリ消費量、その他の重要なシステムメトリクスに関する詳細な情報を提供します。この必須のコマンドを習得することで、リソースを大量に消費するプロセスを特定し、Linux システムのリソースを効果的に管理することができます。
top コマンドの紹介
top コマンドは、システム上で実行されているプロセスの動的なリアルタイムビューを表示する基本的な Linux ユーティリティです。「top」という名前は、デフォルトで CPU を最も多く消費している「上位」のプロセスを表示するという動作に由来しています。
まずはプロジェクトディレクトリに移動し、top コマンドの基本的な使い方を探索しましょう。
cd ~/project
次に、top コマンドを実行します。
top
このコマンドを実行すると、次のようなインタラクティブな表示が見えるはずです。
top - 14:25:30 up 2 days, 3:45, 1 user, load average: 0.15, 0.20, 0.25
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 4096.0 total, 2841.3 free, 845.2 used, 409.5 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 2970.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 labex 20 0 562340 42340 28456 S 2.0 1.0 0:30.25 firefox
2345 labex 20 0 78912 23456 13204 S 0.7 0.6 0:12.34 terminal
3456 root 20 0 43528 5424 4356 S 0.3 0.1 0:05.67 sshd
... (more processes)
top の表示は、主に 2 つのセクションで構成されています。
概要エリア(上部の 5 行):システム全体の情報を提供します。
- システムの稼働時間と負荷平均
- タスク統計(合計、実行中、休止中など)
- CPU 使用率の割合
- メモリ使用量(RAM とスワップ)
プロセスリスト(概要の下の表):実行中のプロセスを次のような詳細情報とともにリスト表示します。
- PID: プロセス ID
- USER: プロセスの所有者
- PR: 優先度
- NI: ナイス値
- VIRT: 使用されている仮想メモリ
- RES: 使用されている常駐メモリ
- %CPU: CPU 使用率の割合
- %MEM: メモリ使用率の割合
- COMMAND: コマンド名
デフォルトでは、表示は 3 秒ごとに自動的に更新されます。top コマンドを終了するには、q キーを押すだけです。
次に、-n 1 オプションを使用してプロセスの静的なスナップショットを取得しましょう。これは top に 1 回だけ更新してから終了するように指示します。
top -n 1 > ~/project/top_snapshot.txt
このコマンドは、プロジェクトディレクトリに top_snapshot.txt という名前のファイルを作成し、現在のシステムプロセスのスナップショットを含めます。ファイルの内容を確認しましょう。
cat ~/project/top_snapshot.txt
インタラクティブな top セッションで表示された内容と同様の出力が、静的なテキストファイルとして表示されるはずです。
top コマンドの出力結果の解釈
システムプロセスのスナップショットが手に入ったので、その情報を分析して、システムのリソース使用状況について何がわかるかを理解しましょう。
nano テキストエディタを使って top_snapshot.txt ファイルを開きます。
nano ~/project/top_snapshot.txt
このファイルには、インタラクティブな top コマンドで表示されるのと同じ情報が見られます。リストから最も CPU を多く消費しているプロセスを特定することに焦点を当てましょう。
プロセスリストのセクション(概要エリアの下)を見て、%CPU 列の値が最も高いプロセスを見つけます。これは、スナップショットが取得された時点で最も多くの CPU を消費していたプロセスを示しています。
たとえば、次のような行がある場合:
1234 labex 20 0 562340 42340 28456 S 2.0 1.0 0:30.25 firefox
これは、ユーザー "labex" が所有する PID 1234 のプロセス(firefox)が CPU の 2.0% とメモリの 1.0% を使用していたことを示しています。
最も CPU 使用率の高いプロセスについて、次の情報をメモしましょう。
- PID (プロセス ID)
- USER (プロセスの所有者)
- %CPU (CPU 使用率の割合)
- %MEM (メモリ使用率の割合)
- COMMAND (実行中のコマンドまたはプログラム)
nano を終了するには、Ctrl+X を押します。
次に、調査結果を記録するために top_analysis.txt という名前のファイルを作成します。
echo "Most CPU-intensive process analysis" > ~/project/top_analysis.txt
最も CPU を多く消費しているプロセスの詳細をファイルに追加します。プレースホルダーを実際に観察した値に置き換えます。
echo "PID: [Replace with PID]" >> ~/project/top_analysis.txt
echo "USER: [Replace with USER]" >> ~/project/top_analysis.txt
echo "CPU%: [Replace with %CPU]" >> ~/project/top_analysis.txt
echo "MEM%: [Replace with %MEM]" >> ~/project/top_analysis.txt
echo "COMMAND: [Replace with COMMAND]" >> ~/project/top_analysis.txt
たとえば、プロセス 1234(firefox)が最も CPU を多く消費していた場合、次のように入力します。
echo "PID: 1234" >> ~/project/top_analysis.txt
echo "USER: labex" >> ~/project/top_analysis.txt
echo "CPU%: 2.0" >> ~/project/top_analysis.txt
echo "MEM%: 1.0" >> ~/project/top_analysis.txt
echo "COMMAND: firefox" >> ~/project/top_analysis.txt
ファイルに書き込んだ内容を確認しましょう。
cat ~/project/top_analysis.txt
これにより、最も CPU を多く消費しているプロセスの詳細が記載された分析ファイルの内容が表示されるはずです。
top コマンドでのプロセスのソートとフィルタリング
top コマンドは、プロセスのソートとフィルタリングの方法を学ぶと、さらに強力なツールになります。このステップでは、特定の情報に焦点を当てるために top の表示をカスタマイズする方法を学びます。
まず、インタラクティブな top コマンドを再度実行しましょう。
top
top が実行されている間、キーボードショートカットを使ってその動作を変更することができます。
M(大文字)を押すと、メモリ使用量でプロセスをソートします。P(大文字)を押すと、CPU 使用量でプロセスをソートします(デフォルト)。T(大文字)を押すと、時間(実行時間)でプロセスをソートします。N(大文字)を押すと、PID(プロセス ID)でプロセスをソートします。
これらのソートオプションをそれぞれ試して、プロセスリストがどのように変化するかを確認してみましょう。実験が終わったら、q を押して top を終了します。
次に、メモリ使用量でソートされたプロセスのスナップショットを作成しましょう。top のバッチモードと特定のオプションを使用します。
top -b -n 1 -o %MEM > ~/project/top_sorted_by_mem.txt
このコマンドでは以下のオプションを使用しています。
-b: バッチモード(非インタラクティブ)-n 1: 1 回だけ実行-o %MEM: メモリ使用量でソート
このファイルの内容を確認しましょう。
cat ~/project/top_sorted_by_mem.txt
メモリ使用量の多いプロセスが上に表示されるように、プロセスがメモリ使用量の順にリストされているはずです。
次に、自分のユーザーアカウントに属するプロセスのみを表示するようにフィルタリングしましょう。
top -b -n 1 -u labex > ~/project/top_user_filtered.txt
-u labex オプションは、出力をフィルタリングして、ユーザー "labex" が所有するプロセスのみを表示します。このファイルを確認しましょう。
cat ~/project/top_user_filtered.txt
このファイルには、"labex" ユーザーが所有するプロセスのみが表示されるはずです。
最後に、ソートとフィルタリングを組み合わせて、より具体的な表示を作成しましょう。
top -b -n 1 -u labex -o %CPU > ~/project/top_custom.txt
このコマンドは、ユーザー "labex" に属するプロセスのみを表示し、CPU 使用量でソートします。結果を確認しましょう。
cat ~/project/top_custom.txt
これらのカスタマイズオプションにより、top はシステムパフォーマンスとリソース使用量の特定の側面に焦点を当てるための汎用的なツールになります。
まとめ
この実験では、Linux で top コマンドを使用してプロセスを監視および分析する方法を学びました。習得したスキルは以下の通りです。
topコマンドを実行して、システムプロセスのリアルタイム表示を確認するtopの出力に表示される情報(CPU 使用量、メモリ使用量、プロセスの詳細など)を理解する- 分析用にプロセス情報のスナップショットを取得する
- CPU およびメモリ使用量を調べることで、リソースを大量に消費するプロセスを特定する
- ソートとフィルタリングオプションを使用して
topの表示をカスタマイズする
これらのスキルは、Linux 環境でのシステム管理とパフォーマンス監視に不可欠です。top コマンドは、システムの健全性を迅速に評価し、潜在的なパフォーマンス問題を特定するために最も頻繁に使用されるツールの 1 つです。
top コマンドを習得することで、システムリソースを効果的に監視し、パフォーマンス問題の原因となっている可能性のあるプロセスを特定し、システムパフォーマンスを最適化するために必要な情報を収集する能力を身につけました。



