Linuxコマンド一覧

topコマンド|いま重いプロセスを見つける

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
top を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

top は動いているプロセスを更新し続けながら表示するコマンドです。画面の読み方、抜け方、スクリプトから使う `-b` の書き方を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-07

書式

top [オプション]

動いているプロセスを、CPU をよく使っている順に並べて表示し続けます。

まず打ってみる

$ top

画面がプロセスの一覧に切り替わり、数字が更新され続けます。 戻るときは q です(Ctrl+C でも終了します)。

画面の読み方

上5行がシステム全体の要約、その下がプロセスの一覧です。

読むところ
top - ...いまの時刻、起動してからの時間、load average
Tasks:プロセスの数と、その内訳(running / sleeping / zombie)
%Cpu(s):CPU の内訳。id が余っている割合
MiB Mem :メモリ。右端の avail Mem が実際に使える量
MiB Swap:スワップ。used が増え続けていればメモリ不足

プロセスの一覧は %CPU の大きい順です。 つまり、**画面のいちばん上が「いま重いもの」**になります。

load average は、1分・5分・15分の平均です。 CPU のコア数と比べて読み、コア数を超えた状態が続いていれば処理が追いついていません。

1回だけ出す

-b(バッチモード)と -n 1(1回で終わる)を付けると、画面を切り替えずに普通の出力として書き出せます。

$ top -b -n 1
top - 17:33:40 up 10:30:45, 2 users,  load average: 0.12, 0.15, 0.10
Tasks: 12 total,   2 running, 10 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.0 us,  1.3 sy,  0.0 ni, 95.4 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7948.0 total,   1843.0 free,   3277.0 used,   2828.0 buff/cache
MiB Swap:   2048.0 total,   1920.0 free,   128.0 used.   4200.0 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 3456 user       20   0  446.1m   85.6m   59.9m R  98.5   4.2   2:34:56 python3
 2345 user       20   0   11.0m    1.2m    987k R   1.5   0.0   0:00.01 top
 2847 user       20   0  337.6m   55.5m   38.8m S   1.2   1.5      1:23 node
  123 root       20   0  117.5m    9.6m    6.8m S   0.3   0.2      0:01 systemd-j
 1234 user       20   0   22.9m    3.4m    2.4m S   0.2   0.1      0:00 zsh
  789 user       20   0   44.6m    5.3m    3.7m S   0.1   0.1      0:00 sshd
    1 root       20   0  165.3m   12.8m    9.0m S   0.0   0.1      0:02 systemd
    2 root       20   0      0k      0k      0k S   0.0   0.0      0:00 kthreadd
  456 root       20   0   44.6m    5.3m    3.7m S   0.0   0.1      0:00 sshd
 5678 root       20   0   12.1m    2.3m    1.6m S   0.0   0.0      0:00 crond
  301 root       20   0    5.5m    1.2m    863k S   0.0   0.0      0:00 networking
  201 systemd-   20   0   24.0m    6.6m    4.6m S   0.0   0.1      0:01 systemd-r

python3 が CPU を 98.5% 使っていることが分かります。 記録に残したいときや、ログに追記したいときはこの形です。

ps と同じことをする

ps でも同じ順番に並べられます。

$ ps aux | sort -k3 -nr | head -3
user        3456 98.5  4.2  456789  87654 pts/0    R    09:15   154:56 python3 backup_sync.py
user        2847  1.2  1.5  345678  56789 pts/0    S    10:35     1:23 node server.js
root         123  0.3  0.2  120344   9876 ?        Ss   00:01     0:01 /lib/systemd/systemd-journald

-k3 は3列目(%CPU)、-nr は数として大きい順、という意味です。 眺めるなら top、渡すなら ps と覚えておくと迷いません。

実務での使いどころ

top は、サーバーが重いと言われたときに最初に開く画面です。

場面打ち方
何が重いのか見るtop
記録に残すtop -b -n 1 >> load.log
CPU の高い順に3つだけ見るps aux | sort -k3 -nr | head -3
メモリの余裕を見るfree -h
犯人が分かったら止めるkill <PID>

top で PID を見つけ、kill で止める。 この2つが組になります。

つまずきやすいところ

q で抜けます。 Ctrl+C でも終わりますが、q が正式な抜け方です。

%CPU は瞬間の値です。 一瞬だけ高いのは正常なこともあります。 TIME+(そのプロセスが使った CPU 時間の合計)と合わせて見ると、ずっと重いのか一瞬なのかが分かります。

メモリは avail Mem を見ます。 free(空き)が少なくても、buff/cache は必要になれば解放されます。 足りているかどうかは avail Mem で判断してください。

画面を見続けるものなので、スクリプトには向きません。 自動で記録したいときは top -b -n 1、または ps を使ってください。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

ps / kill / free / df

よくある質問

top から抜けられません。
`q` を押してください。Ctrl+C でも終了します。
ps とどう使い分けますか?
`top` は更新され続けるので「いま重いもの」を眺めるのに向いています。`ps` はその瞬間の一覧を1回出すだけなので、記録に残したり `grep` につないだりするのに向いています。
load average はどう読みますか?
1分・5分・15分の平均待ち行列の長さです。CPU のコア数と比べ、コア数より大きい状態が続いていれば処理が追いついていません。
スクリプトの中で使えますか?
`top -b -n 1` で1回ぶんを普通の出力として書き出せます。`-b` はバッチモード、`-n 1` は1回で終わる指定です。
メモリの見方が分かりません。
`free` の行を鵜呑みにせず、`avail Mem`(利用可能)を見てください。buff/cache は必要になれば解放されるので、使用中のように見えても余裕があることが多いです。