Linux タスクの表示

LinuxLinuxBeginner
今すぐ練習

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

はじめに

Linux ユーザーやシステム管理者にとって、システムプロセスを監視することは重要なスキルです。どのプロセスが実行されているか、それらがどのようにリソースを消費しているかを理解することで、システムの安定性とパフォーマンスを維持することができます。

この実験では、Linux システムプロセスのリアルタイム監視に強力なツールである top コマンドの使い方を学びます。top コマンドは、CPU 使用率、メモリ消費量、その他の重要なシステムメトリクスに関する詳細な情報を提供します。この必須のコマンドを習得することで、リソースを大量に消費するプロセスを特定し、Linux システムのリソースを効果的に管理することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/echo -.-> lab-271407{{"Linux タスクの表示"}} linux/cat -.-> lab-271407{{"Linux タスクの表示"}} linux/cd -.-> lab-271407{{"Linux タスクの表示"}} linux/top -.-> lab-271407{{"Linux タスクの表示"}} linux/nano -.-> lab-271407{{"Linux タスクの表示"}} end

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 つのセクションで構成されています。

  1. 概要エリア(上部の 5 行):システム全体の情報を提供します。

    • システムの稼働時間と負荷平均
    • タスク統計(合計、実行中、休止中など)
    • CPU 使用率の割合
    • メモリ使用量(RAM とスワップ)
  2. プロセスリスト(概要の下の表):実行中のプロセスを次のような詳細情報とともにリスト表示します。

    • 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 使用率の高いプロセスについて、次の情報をメモしましょう。

  1. PID (プロセス ID)
  2. USER (プロセスの所有者)
  3. %CPU (CPU 使用率の割合)
  4. %MEM (メモリ使用率の割合)
  5. 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 が実行されている間、キーボードショートカットを使ってその動作を変更することができます。

  1. M(大文字)を押すと、メモリ使用量でプロセスをソートします。
  2. P(大文字)を押すと、CPU 使用量でプロセスをソートします(デフォルト)。
  3. T(大文字)を押すと、時間(実行時間)でプロセスをソートします。
  4. 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 コマンドを使用してプロセスを監視および分析する方法を学びました。習得したスキルは以下の通りです。

  1. top コマンドを実行して、システムプロセスのリアルタイム表示を確認する
  2. top の出力に表示される情報(CPU 使用量、メモリ使用量、プロセスの詳細など)を理解する
  3. 分析用にプロセス情報のスナップショットを取得する
  4. CPU およびメモリ使用量を調べることで、リソースを大量に消費するプロセスを特定する
  5. ソートとフィルタリングオプションを使用して top の表示をカスタマイズする

これらのスキルは、Linux 環境でのシステム管理とパフォーマンス監視に不可欠です。top コマンドは、システムの健全性を迅速に評価し、潜在的なパフォーマンス問題を特定するために最も頻繁に使用されるツールの 1 つです。

top コマンドを習得することで、システムリソースを効果的に監視し、パフォーマンス問題の原因となっている可能性のあるプロセスを特定し、システムパフォーマンスを最適化するために必要な情報を収集する能力を身につけました。