Linux top コマンド:リアルタイムなシステム監視

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

はじめに

Linux の top コマンドに関する実験へようこそ。この実験では、top コマンドを使用して、システムのプロセスやリソースの使用状況をリアルタイムで監視する方法を学びます。このスキルは、システム管理者や開発者、あるいはシステムのパフォーマンスを理解し管理する必要があるすべての人にとって不可欠なものです。

あなたが、多忙なウェブサーバーの保守を担当する新人システム管理者であると想像してください。サーバーの動作が重いという報告があり、どのプロセスが最もリソースを消費しているかを特定する必要があります。top コマンドは、この調査における主要なツールとなり、システムの活動をリアルタイムで表示・分析することを可能にします。

top コマンドの基本操作

まずは、最もシンプルな形式で top コマンドを実行してみましょう。これにより、システムのプロセスの動的なリアルタイムビューが表示されます。

ターミナルを開き、以下のコマンドを実行してください。

top

以下のような画面が表示されるはずです。

top - 14:30:23 up  5:10,  1 user,  load average: 0.15, 0.22, 0.28
Tasks: 213 total,   1 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  1.3 system,  0.0 ni, 96.3 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7824.9 total,   2576.8 free,   2935.0 used,   2313.1 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4558.1 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 user      20   0 3626108 205008  89380 S   2.0   2.6   0:45.85 gnome-shell
 5678 user      20   0  859492  51528  38060 S   1.3   0.6   0:10.91 Xorg
 9101 user      20   0  722816  36096  29088 S   0.7   0.5   0:05.62 gnome-terminal

この表示は継続的に更新されます(デフォルトでは 3 秒ごと)。表示内容を詳しく見ていきましょう。

  1. 1 行目は、現在の時刻、システムの稼働時間(uptime)、ログインユーザー数、およびロードアベレージ(負荷平均)を示しています。
  2. 2 行目は、タスクの総数とその状態(実行中、スリープ中、停止中、ゾンビ状態)を表示しています。
  3. 3 行目は、CPU 使用率の内訳を示しています。
  4. 4 行目と 5 行目は、メモリ(RAM)とスワップ領域の使用状況を表示しています。
  5. 下部のテーブルには、個々のプロセスに関する情報が表示され、デフォルトでは CPU 使用率の高い順に並んでいます。

top を終了するには、'q' キーを押します。

top でのプロセスの並べ替え

デフォルトでは、top はプロセスを CPU 使用率順に並べ替えます。しかし、このソート順は実行中に変更することができます。メモリ使用率で並べ替える方法を確認してみましょう。

  1. top コマンドを実行します。
top
  1. top が実行されている状態で、'M' キー(大文字)を押します。これにより、CPU 使用率ではなく、メモリ使用率(常駐セットサイズ)の順にプロセスが並べ替えられます。

リストの先頭に、最もメモリを消費しているプロセスが表示されるようになります。

  1. 再び CPU 使用率でソートするには、'P' キー(大文字)を押します。

  2. プロセス ID(PID)でソートするには、'N' キー(大文字)を押します。

  3. 現在のソート順を反転(昇順・降順の切り替え)させるには、'R' キー(大文字)を押します。

top の実行中に 'h' または '?' を押すと、利用可能なすべてのコマンドを確認できるヘルプ画面が表示されます。

確認が終わったら、'q' を押して top を終了してください。

更新間隔の変更

デフォルトでは、top は 3 秒ごとに表示を更新します。この間隔は変更可能です。より頻繁に状況を把握するために、更新間隔を 1 秒に設定してみましょう。

-d オプションを付けて top を実行します。

top -d 1

表示の更新が速くなったことが確認できるはずです。これは、短時間しか実行されないプロセスを捕捉したい場合や、システム活動の急激な変化を観察したい場合に便利です。

top の実行中に更新間隔を変更するには、以下の手順を行います。

  1. 'd' キー(小文字)を押します。
  2. 新しい遅延時間を秒単位で入力します(例:0.5 秒にする場合は '0.5')。
  3. Enter キーを押します。

更新間隔を極端に短くすると、top 自体がかなりの CPU リソースを消費する可能性があるため、注意して使用してください。

終わったら 'q' を押して top を終了します。

特定のユーザーのプロセスを表示する

システム管理者として、特定のユーザーのプロセスだけを監視したいことがよくあります。top コマンドではこれを簡単に実行できます。

現在のユーザー(この実験環境では 'labex')のプロセスのみを監視してみましょう。

top -u labex

'labex' ユーザーが所有するプロセスのみが表示されるようになります。

この機能は、特定のユーザーの活動に関連するトラブルシューティングを行う場合や、マルチユーザーシステムで自分のプロセスだけに集中したい場合に非常に役立ちます。

観察が終わったら 'q' を押して top を終了します。

アクティブなプロセスのみを表示する

アイドル状態のプロセスを無視して、アクティブなプロセスだけに注目したい場合があります。top コマンドにはそのためのオプションが用意されています。

-i オプションを付けて top を実行します。

top -i

このコマンドは、前回の更新以降に CPU 使用率がゼロであったプロセスをフィルタリングし、アクティブなプロセスのみを表示します。

これにより、アイドル状態のプロセスに邪魔されることなく、現在リソースを消費しているプロセスを特定しやすくなります。

観察が終わったら 'q' を押して top を終了します。

まとめ

お疲れ様でした!リアルタイムなシステム監視のための top コマンドに関する実験を完了しました。学んだ内容を振り返ってみましょう。

  1. システムプロセスとリソース使用状況を表示する top コマンドの基本操作。
  2. top 内でプロセスを異なる基準(CPU 使用率、メモリ使用率、PID)で並べ替える方法。
  3. 更新頻度を調整するための更新間隔の変更方法。
  4. 特定のユーザーに絞ったプロセスの監視。
  5. アイドル状態のプロセスを除外し、アクティブなプロセスのみを表示する方法。

これらのスキルは、システムのパフォーマンスボトルネックを特定したり、システムトラブルを解決したりする必要がある場面で、リソースの監視と管理に非常に役立ちます。

この実験では紹介しきれなかった、その他の top コマンドのオプションや対話型コマンドもいくつか紹介します。

  • -b: バッチモードで実行(出力を他のプログラムやファイルに送る際に便利)
  • -n: 指定した回数だけ更新して終了する
  • 'k': top の中からプロセスを終了(キル)させる(PID を指定)
  • 'r': プロセスの優先度(Nice 値)を変更する
  • 'c': コマンド名のみの表示と、フルパス・引数付き表示を切り替える
  • 'V': バージョン情報を表示する

効果的なシステム監視は、システムのパフォーマンスと安定性を維持するために不可欠です。定期的に top コマンドを使用することで、リソース関連の問題がシステム全体に大きな影響を与える前に、それらを検知し防止することができます。