プロセスが消費する CPU やメモリなどのハードウェアリソースの情報収集、およびプロセスの操作を行うコマンドに top があります。top には対話型のインターフェースも用意されています。
top [option] |
表 31-2. top コマンドの主な option
| -d delay | スクリーンを更新する間隔を秒単位で指定します。起動後の対話型インターフェースで s を入力し変更することができます。 |
| -p PID | 表示するプロセス ID の指定です。 |
| -s | セキュアモードで起動します。プロセスへのシグナル送信などの操作を対話型インターフェースで禁止します。 |
| -i | アイドル中のプロセスやゾンビプロセスを表示しません。起動後の対話型インターフェースで i を入力してこのモードを切り換えることができます。 |
| -n iter | 指定した回数更新し、top コマンドを終了します。 |
以下のように実行します。初期状態では、先頭 5 行にシステム全体の情報が表示されます。この部分をサマリーエリアといいます。次の行は、メッセージや対話的にコマンドを入力する際のプロンプトが表示されるエリアです。その下に各フィールドのヘッダがあり、プロセスごとの情報がリストされます。対話型インターフェースで使用可能なコマンドは 項31.2.1 を参照してください。
# top
top - 12:22:56 up 7 days, 16 min, 15 users, load average: 0.00, 0.02, 0.00
Tasks: 114 total, 3 running, 108 sleeping, 3 stopped, 0 zombie
Cpu(s): 0.3% us, 0.3% sy, 0.0% ni, 99.0% id, 0.3% wa, 0.0% hi, 0.0% si
Mem: 256628k total, 249408k used, 7220k free, 31068k buffers
Swap: 521600k total, 16292k used, 505308k free, 47524k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29339 root 17 0 3388 948 1680 R 0.3 0.4 0:00.10 top
1 root 16 0 2516 516 1244 S 0.0 0.2 0:00.62 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
3 root 5 -10 0 0 0 S 0.0 0.0 0:00.24 events/0
4 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 khelper
5 root 5 -10 0 0 0 S 0.0 0.0 0:04.04 kblockd/0
29 root 15 0 0 0 0 S 0.0 0.0 0:00.00 kapmd
31 root 15 0 0 0 0 S 0.0 0.0 0:00.59 pdflush
32 root 15 0 0 0 0 S 0.0 0.0 0:00.98 pdflush
34 root 7 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0
33 root 15 0 0 0 0 S 0.0 0.0 0:06.23 kswapd0
192 root 16 0 0 0 0 S 0.0 0.0 0:00.00 kseriod
202 root 15 0 0 0 0 S 0.0 0.0 0:01.48 kjournald
274 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khubd
339 root 15 0 0 0 0 S 0.0 0.0 0:00.02 kjournald
670 root 16 0 2360 544 1208 S 0.0 0.2 0:00.24 syslogd |
表示される各フィールドの概要は以下の通りです。
表 31-4. 主なフィールド
| PID | プロセス ID |
| USER | ユーザー名 |
| PR | プライオリティ |
| NI | ナイス値 |
| VIRT | プロセスの使用する仮想メモリ容量 |
| RES | スワップしていない物理メモリの使用量 |
| SHR | 共有メモリの使用量 |
| %CPU | CPU 使用量(占有率) |
| %MEM | 物理メモリの使用量(占有率) |
| TIME+ | 起動以降に使用した CPU 時間の合計 |
| COMMAND | コマンドライン文字列またはプログラム名 |
![]() | これらは、/proc/ ファイルシステムから得られる情報と同じです。/proc ファイルシステムについて詳細は、第30章を参照してください。 |
起動後には、以下のようなコマンドを入力することができます。
表 31-5. 対話型インターフェースの主なコマンド
| [Space]キー | 即座に更新します。 |
| h | ? | ヘルプ画面を表示します。 |
| k | プロセスを kill します。プロンプト PID to kill: が表示されたら対象のプロセスの PID を入力します。デフォルトのシグナルは 15 の SIGTERM です。変更する場合は、Kill PID PID with signal [15]: に続けてシグナルを入力します。 |
| i | アイドルプロセスとゾンビプロセスの表示/非表示を切り換えます。 |
| n | # | 表示するプロセスの数を変更します。プロンプト Maximum tasks = 0, change to (0 is unlimited): が表示されたら表示する数を入力します。0 は無制限です。 |
| q | top コマンドを終了します。 |
| r | プロセスのプライオリティを変更します。プロンプト PID to renice: が表示されたら対象プロセスのプロセス ID を入力します。Renice PID PID to value: に続けて renice 値を入力します。現在の nice 値は、リストの NI に表示されています。 |
| s | 表示を更新する間隔を変更します。プロンプト Change delay from 3.0 to: が表示されたら間隔を秒単位で入力します。 |
| f | 表示するフィールドの追加/削除を行います。 |
| F | O | 現在のソートフィールドを変更します。 |
| o | フィールドの表示順序を変更します。 |
| l | top 項目(負荷平均、uptime 情報)の表示/非表示を切り換えます。 |
| m | Mem:(メモリ情報)の表示/非表示を切り換えます。 |
| t | Cpu(s):(プロセスと CPU 状態の情報)の表示/非表示を切り換えます。 |
| c | COMMAND フィールドのコマンド名全体の表示/非表示を切り換えます。 |
| N | PID 順にソートします。 |
| P | CPU の使用量順にソートします。 |
| M | メモリの使用量順にソートします。 |
| W | 現在の設定を ~/.toprc ファイルに書き込みます。この設定ファイルを読み込んで次回起動時には設定が有効になります。 |
| b | 太字と反転表示を切り換えます。 |
| x | カラムの強調表示有無を切り換えます。 |
| y | 行の強調表示有無を切り換えます。 |
| < | ソート対象フィールドを左のフィールドに変更します。 |
| > | ソート対象フィールドを右のフィールドに変更します。 |
| R | ソートの昇順/降順を切り換えます。 |
| u | 表示ユーザーを選択します。プロンプト Which user (blank for all): が表示されたら ユーザー ID またはユーザー名を入力します。選択ユーザーのプロセスのみが表示されます。ブランクのまま [Enter] キーを押すと全ユーザーのプロセンスが表示されます。 |
| A | フルスクリーンと複数スクリーンとを切り換えます。複数スクリーンを表示しているときには、a(次のスクリーン)または w(前のスクリーン)でカレントスクリーンを変更できます。G ではスクリーン番号を指定して変更します。 |
top コマンド起動後に表示するフィールドを変更するには以下のように操作します。
f コマンドを入力すると以下の画面が表示されます。現在表示されているフィールドの 1 桁目には * が表示されています。2 桁目の文字(PID の場合は、A)を入力することで表示/非表示が切り替わります。以下の状態で UID を表示したい場合は、d を入力します。UID の行の 1 桁目に * が表示され、[Enter]キーで戻ると画面に UID が追加されます。
Current Fields: AEHIOQTWKMNbcdfgjplrsuvyzX for window 1:Def Toggle fields via field letter, type any other key to return * A: PID = Process Id u: nFLT = Page Fault count * E: USER = User Name v: nDRT = Dirty Pages count * H: PR = Priority y: WCHAN = Sleeping in Function * I: NI = Nice value z: Flags = Task Flags <sched.h> * O: VIRT = Virtual Image (kb) * X: COMMAND = Command name/line * Q: RES = Resident size (kb) * T: SHR = Shared Mem size (kb) Flags field: * W: S = Process Status 0x00000001 PF_ALIGNWARN * K: %CPU = CPU usage 0x00000002 PF_STARTING * M: TIME+ = CPU Time, hundredths 0x00000004 PF_EXITING * N: %MEM = Memory usage (RES) 0x00000040 PF_FORKNOEXEC b: PPID = Parent Process Pid 0x00000100 PF_SUPERPRIV c: RUSER = Real user name 0x00000200 PF_DUMPCORE d: UID = User Id 0x00000400 PF_SIGNALED f: GROUP = Group Name 0x00000800 PF_MEMALLOC g: TTY = Controlling Tty 0x00002000 PF_FREE_PAGES (2.5) j: #C = Last used cpu (SMP) 0x00008000 debug flag (2.5) p: SWAP = Swapped size (kb) 0x00024000 special threads (2.5) l: TIME = CPU Time 0x001D0000 special states (2.5) r: CODE = Code size (kb) 0x00100000 PF_USEDFPU (thru 2.4) s: DATA = Data+Stack size (kb) |
top コマンド起動後にソート対象のフィールドを変更するには以下のように行います。
F または、O コマンドを入力すると以下の画面が表示されます。現在ソートされているフィールドの 1 桁目には * が表示されています。2 桁目の文字(PID の場合は a)を入力することでソート対象が切り替わります。以下の状態で メモリの使用量でソートしたい場合は、n を入力します。%MEM の行の 1 桁目に * が表示され、[Enter]キーで戻るとメモリ使用量でソートされます。
Current Sort Field: Q for window 1:Def Select sort field via field letter, type any other key to return a: PID = Process Id v: nDRT = Dirty Pages count b: PPID = Parent Process Pid w: S = Process Status c: RUSER = Real user name x: COMMAND = Command name/line d: UID = User Id y: WCHAN = Sleeping in Function e: USER = User Name z: Flags = Task Flags <sched.h> f: GROUP = Group Name g: TTY = Controlling Tty Note1: h: PR = Priority If a selected sort field can't be i: NI = Nice value shown due to screen width or your j: #C = Last used cpu (SMP) field order, the '<' and '>' keys k: %CPU = CPU usage will be unavailable until a field l: TIME = CPU Time within viewable range is chosen. m: TIME+ = CPU Time, hundredths n: %MEM = Memory usage (RES) Note2: o: VIRT = Virtual Image (kb) Field sorting uses internal values, p: SWAP = Swapped size (kb) not those in column display. Thus, * Q: RES = Resident size (kb) the TTY & WCHAN fields will violate r: CODE = Code size (kb) strict ASCII collating sequence. s: DATA = Data+Stack size (kb) (shame on you if WCHAN is chosen) t: SHR = Shared Mem size (kb) u: nFLT = Page Fault count |
top コマンド起動後にフィールドの表示順序を変更するには以下のように操作します。
o コマンドを入力すると次の画面が表示されます。現在表示されているフィールドの 1 桁目には * が表示されており上にあるものから順番に表示されています。2 桁目の文字(USER の場合は E)の大文字を入力すると表示順序が上がり、小文字を入力すると表示順序が下がります。この状態で ユーザー名を一番左に表示したい場合は、E を入力します。USER の行と PID の行が入れ替わり、USER の行が 1 行目になります。[Enter]キーで戻ると PID と USER の表示順序が変更されます。
Current Fields: AEHIOQTWKNMbcdfgjplrsuvyzX for window 1:Def Upper case letter moves field left, lower case right * A: PID = Process Id u: nFLT = Page Fault count * E: USER = User Name v: nDRT = Dirty Pages count * H: PR = Priority y: WCHAN = Sleeping in Function * I: NI = Nice value z: Flags = Task Flags <sched.h> * O: VIRT = Virtual Image (kb) * X: COMMAND = Command name/line * Q: RES = Resident size (kb) * T: SHR = Shared Mem size (kb) Flags field: * W: S = Process Status 0x00000001 PF_ALIGNWARN * K: %CPU = CPU usage 0x00000002 PF_STARTING * N: %MEM = Memory usage (RES) 0x00000004 PF_EXITING * M: TIME+ = CPU Time, hundredths 0x00000040 PF_FORKNOEXEC b: PPID = Parent Process Pid 0x00000100 PF_SUPERPRIV c: RUSER = Real user name 0x00000200 PF_DUMPCORE d: UID = User Id 0x00000400 PF_SIGNALED f: GROUP = Group Name 0x00000800 PF_MEMALLOC g: TTY = Controlling Tty 0x00002000 PF_FREE_PAGES (2.5) j: #C = Last used cpu (SMP) 0x00008000 debug flag (2.5) p: SWAP = Swapped size (kb) 0x00024000 special threads (2.5) l: TIME = CPU Time 0x001D0000 special states (2.5) r: CODE = Code size (kb) 0x00100000 PF_USEDFPU (thru 2.4) s: DATA = Data+Stack size (kb) |