Bash 速習チュートリアル

Bash topコマンド

1. topコマンドの使用方法

topコマンドは、Linux上で実行されているタスク(プロセス)を表示するために使用されます。
システムのパフォーマンスをリアルタイムで監視するための、非常に強力なツールです。

以下の例はすべて、デモンストレーション用の仮想的な出力結果を使用しています:

top - 08:00:01 up 10 days,  3:22,  3 users,  load average: 0.01, 0.05, 0.10
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.7 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8163100 total,  123456 free,  234567 used,  345678 buff/cache
KiB Swap:  2097148 total,  1048576 free,  1048572 used.  456789 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash
 5678 user      20   0  234567  23456   2345 S   0.5  0.3   0:02.34 python
 9101 user      20   0  345678  34567   3456 S   0.7  0.4   0:03.45 node

1.1 基本的な使い方

Linuxのタスクを表示するには、topコマンドを入力します。

例:基本的な使い方

top
# 実行中のプロセス一覧がリアルタイムで表示されます
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash
 5678 user      20   0  234567  23456   2345 S   0.5  0.3   0:02.34 python
 9101 user      20   0  345678  34567   3456 S   0.7  0.4   0:03.45 node

2. 出力の詳細

topコマンドの出力には複数のカラム(列)があり、それぞれがシステムプロセスの異なる側面を表しています。

  • PID: プロセスID。各プロセスに割り当てられた一意の識別子。
  • USER: プロセスを所有しているユーザーアカウント。
  • PR: プロセスの優先順位。
  • NI: ナイス値。スケジューリングの優先順位に影響を与えます。
  • VIRT: プロセスが使用している仮想メモリのサイズ。
  • RES: 常駐メモリ(Resident Memory)サイズ。プロセスが使用している、スワップされていない物理メモリ量。
  • SHR: 共有メモリのサイズ。
  • S: プロセスのステータス(S = スリープ中、R = 実行中など)。
  • %CPU: CPU使用率のパーセンテージ。
  • %MEM: メモリ使用率のパーセンテージ。
  • TIME+: プロセスが開始されてから使用した合計CPU時間。
  • COMMAND: プロセスを起動したコマンド名。

3. オプション

topコマンドには、動作をカスタマイズするための様々なオプションが用意されています。

  • -d - 更新の間隔を設定する
  • -p - 特定のPIDのみを監視する
  • -u - 特定ユーザーのタスクを表示する
  • -n - 反復(更新)の回数を設定する
  • -b - バッチモードで動作させる

3.1 更新間隔の設定

-dオプションを使用すると、画面が更新されるまでの時間を設定できます。

例:更新間隔を5秒に設定する

top -d 5
# 5秒ごとに情報が更新されます
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash

3.2 特定のPIDの監視

-pオプションを使用すると、特定のプロセスID(PID)のみを追跡できます。

例:特定のPID(1234)を監視する

top -p 1234
# 指定したPIDのステータスのみが表示されます
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash

3.3 特定ユーザーのタスク表示

-uオプションを使用すると、特定のユーザーに関連するタスクのみを表示できます。

例:ユーザー名「user」のタスクを表示する

top -u user
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash

3.4 反復回数の設定

-nオプションを使用すると、topが自動終了するまでの更新回数を指定できます。

例:2回更新した後に終了する

top -n 2

3.5 バッチモードでの実行

-bオプションを使用すると、topをバッチモードで実行できます。これは、出力を他のプログラムに渡したり、ファイルに保存したりする場合に最適です。

例:バッチモードで1回だけ出力する

top -b -n 1
# スナップショットとして標準出力に表示されます
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash

4. オプションの組み合わせ

オプションを組み合わせることで、より詳細で実用的な出力を得ることができます。たとえば、top -b -n 1 を実行すると、バッチモードで1回分のスナップショットを取得できます。

例:オプションの組み合わせ

top -b -n 1
# バッチモードで1回だけ実行して終了します
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1234 user      20   0  123456  12345   1234 S   0.3  0.2   0:01.23 bash