【topとhtop】LinuxでCPUやメモリの使用率をリアルタイムで確認する方法【Linuxコマンド入門 Part3-1】

top,htopコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

「なんだかLinuxの動作が重い…」「ファンの音が急にうるさくなった」 そんな経験はありませんか?Windowsの「タスクマネージャー」やMacの「アクティビティモニタ」のように、Linuxでも「今、システムで何が起きているか」をリアルタイムで監視する方法があります。

今回は、どの環境にも入っている標準コマンド top と、それをより見やすく高機能にした htop について紹介します。これを使えば、「重い原因(犯人)」を一発で見つけられるようになります。

topコマンドの出力結果。linuxコマンドの使い方の紹介。
linuxコマンドでシステムのメモリやCPUの状態、プロセスの詳細を確認する方法を紹介するシリーズのサムネイル 6 記事
シリーズ

Linuxコマンド入門 Part3 ~システムの状態確認とネットワークの基本~

Linuxのシステム管理コマンドや基本的なネットワーク関係コマンドを理解しよう。

top コマンド

基本構文

使い方は、以下のようにターミナルに打ち込むだけです。

top

実行画面の見方

実行すると、画面全体が切り替わり、数値が絶えず更新される画面になります。

top - 10:35:22 up 14 days,  2:05,  1 user,  load average: 0.15, 0.08, 0.01
Tasks: 123 total,   1 running, 122 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.5 us,  0.5 sy,  0.0 ni, 97.8 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   7950.0 total,   1250.5 free,   3450.2 used,   3249.3 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   4200.5 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   1234 root      20   0 1234568  56780  12340 S   1.2   0.7   0:15.22 nginx
   5678 user      20   0  987654  43210   5678 R   0.5   0.5   0:03.45 python
      1 root      20   0  123456   7890   1234 S   0.0   0.1   1:23.45 systemd

出力の読み方

情報量が多いですが、まずは以下の2点だけ見ればOKです。

  1. 上半分(ヘッダー情報): システム全体の状況。
    • tasks: システムのタスク数。
    • %Cpu(s): CPUの使用率。
    • MiB Mem: メモリの使用状況。
  2. 下半分(プロセス一覧): 動いているプログラムのランキング。
    • %CPU%MEM が高いものが、リソースを消費している「重い」プロセスです。

操作の終了方法: 元の画面に戻るには、キーボードの q を押してください。

htopコマンド

top は便利ですが、「文字ばかりでちょっと見づらい…」と感じることもあります。現代的な表示のhtopというコマンドもあります。

htopコマンドの出力結果。linuxコマンドの使い方の紹介。

htopのメリット

  • カラフル: CPUやメモリの使用量がバーで表示され、直感的に分かります。
  • マウス操作: 設定によってはマウスでクリックして操作できます。
  • スクロール: 画面外のプロセスも矢印キーでスクロールして確認できます。

htopのデメリット

  • コマンドがわかりずらい: topと違いファンクションキーでの操作なので若干複雑

インストールが必要

top と違い、標準では入っていないことがあります。その場合は以下のコマンドでインストールできます。

# Ubuntu / Debian系
sudo apt install htop
# CentOS / RHEL系
sudo yum install htop

使い方は top と同じく、コマンド名を入力するだけです。

htop

知っておくと便利な操作(top)

topで利用できるキー操作です。実行中にキーボードを押すことで表示を変えられます。htopでもおおむね同様の機能がF1やF2キーなどに割り当てられています。

キー動作どんな時に使う?
1CPUごとの表示切替「1つのCPUだけ集中して負荷がかかっていないか?」を見たい時。コアごとの表示になります。
Lコマンド検索“top”などを打ちこみEnterで検索できます。
f表示項目編集デフォルトで表示されないDATAやUIDなどの表示切替ができます。
cコマンド名の完全表示実行コマンド名が長すぎて途切れている時に、フルのパス(場所)を表示します。
PPID順に並び変えPID順にしたいとき。
Mメモリ使用量順に並び替えメモリ使用量が多いものを確認したいときに使います。
kプロセスの終了 (Kill)暴走して止まらないプログラムを強制終了させたい時。
Z表示の見た目変更色を変えたりできる。
q終了 (Quit)元のターミナル画面に戻る時。
hヘルプ表示操作コマンド一覧表示

htop の場合は、画面下部にファンクションキー(F1, F2…)のガイドが出ているので、それを参考に操作できます。

L (検索)補足

shift + l で”Locte string “と入力受付欄が表示されます。ここに”top”など検索したいコマンド名を打ち込めば、該当のタスクを表示してくれます。

入力受付

Tasks:  23 total,   1 running,  22 sleeping,   0 stopped,   0 zombie
%Cpu(s):   0.0/0.1     0[                                                                                             ]
MiB Mem :   3790.2 total,   3394.4 free,    367.7 used,    101.3 buff/cache
MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   3422.5 avail Mem
Locate string | <入力受付>
    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0   21828  11996   9180 S   0.0   0.3   0:02.75 systemd
      2 root      20   0    3120   2176   2048 S   0.0   0.1   0:00.19 init-systemd(Ub

topを検索したときの出力例

top コマンドを実行しているタスクが表示されます。メモリを0.1%くらい使っているようです。

Tasks:  23 total,   1 running,  22 sleeping,   0 stopped,   0 zombie
%Cpu(s):   0.0/0.0     0[                                                                                             ]
MiB Mem :   3790.2 total,   3388.6 free,    370.7 used,    104.1 buff/cache
MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   3419.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    689 data      20   0    9268   5376   3328 R   0.0   0.1   0:00.01 top

【中級者向け】f(表示項目編集 Field Management)補足

f キーを押すことで、表示する項目の表示非表示と並べ替えができます。

表示項目

表示項目のうち表示したいものに合わせて”space“をおせば表示と非表示を切り替えられ、左右キーと上下キーで表示順を並べ替えられます。設定後”q“キーで元の表示に戻せます。

Fields Management for window 1:Def, whose current sort field is %MEM
   Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
   'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!

* PID      = Process Id       * nTH      = Number of Threads  nsPID    = PID namespace Ino 
* %CPU     = CPU Usage          nMin     = Minor Page Faults  RSsh     = RES Shared (KiB)
* %MEM     = Memory Usage (RES  nDRT     = Dirty Pages Count  CGNAME   = Control Group nam
* TIME+    = CPU Time, hundred  WCHAN    = Sleeping in Funct  NU       = Last Used NUMA no
* COMMAND  = Command Name/Line  Flags    = Task Flags <sched  LOGID    = Login User Id
* PPID     = Parent Process pi  CGROUPS  = Control Groups   * EXE      = Executable Path
  UID      = Effective User Id  SUPGIDS  = Supp Groups IDs    RSS      = Res Mem (smaps),
  RUID     = Real User Id       SUPGRPS  = Supp Groups Names  PSS      = Proportion RSS,
  RUSER    = Real User Name     TGID     = Thread Group Id    PSan     = Proportion Anon,
  SUID     = Saved User Id      OOMa     = OOMEM Adjustment   PSfd     = Proportion File,
  SUSER    = Saved User Name    OOMs     = OOMEM Score curre  PSsh     = Proportion Shrd,
* CODE     = Code Size (KiB)    ENVIRON  = Environment vars   USS      = Unique RSS, KiB
  GID      = Group Id           vMj      = Major Faults delt  ioR      = I/O Bytes Read
  GROUP    = Group Name         vMn      = Minor Faults delt  ioRop    = I/O Read Operatio
  PGRP     = Process Group Id   USED     = Res+Swap Size (Ki  ioW      = I/O Bytes Written
  TTY      = Controlling Tty    nsIPC    = IPC namespace Ino  ioWop    = I/O Write Operati
  SID      = Session Id         nsMNT    = MNT namespace Ino  AGID     = Autogroup Identif
  TPGID    = Tty Process Grp I  nsNET    = NET namespace Ino  AGNI     = Autogroup Nice Va
 STARTED  = Start Time from b* USER     = Effective User Na  NI       = Nice Value         nsUSER   = USER namespace In  ELAPSED  = Elapsed Running T* PR       = Priority         * P        = Last Used Cpu (SM  nsUTS    = UTS namespace Ino* %CUU     = CPU Utilization    VIRT     = Virtual Image (Ki* TIME     = CPU Time           LXC      = LXC container nam  %CUC     = Utilization + chi  RES      = Resident Size (Ki* SWAP     = Swapped Size (KiB  RSan     = RES Anonymous (Ki  nsCGROUP = CGRP namespace In* SHR      = Shared Memory (Ki* DATA     = Data+Stack (KiB)   RSfd     = RES File-based (K  nsTIME   = TIME namespace In* S        = Process Status     nMaj     = Major Page Faults  RSlk     = RES Locked (KiB)
プロセスの詳細(VRIT,PPIDなど)

topで確認できる項目のうち、メモリ使用量などは分かりやすいですが、そのほかの項目についてはいまいちイメージが付きにくいものもあります。主要なもののうち特に知っておくといい項目について紹介します。

1. メモリの「見かけ」と「実質」を見抜く (VIRT / RES / SHR)

これらはメモリの使用量に関する項目です。

  • VIRT (Virtual Image): 仮想メモリ使用量
    • 意味: プロセスが「確保したい」と要求しているメモリの総量です。
    • 解説: ここが数GBあっても驚かないでください。実際に物理メモリを使っているわけではなく、「予約」を含んだ数値だからです。
  • RES (Resident Size): 物理メモリ使用量 【重要】
    • 意味: 実際に物理メモリ(RAM)を消費している量です。
    • 解説: 「メモリ不足かな?」と思った時に見るべきなのは、VIRTではなく、この RES です。
  • SHR (Shared Memory): 共有メモリ
    • 意味: 他のプロセスと共有しているメモリ量です(ライブラリなど)。

2. 重い原因はここかも? (SWAP)

これはデフォルトではオフになっていることが多いですが、確認して損はない項目です。

  • SWAP (Swapped Size): スワップ使用量
    • 意味: 物理メモリに入りきらず、ディスク(HDD/SSD)に追い出されたデータの量です。

ここの数値が大きいプロセスは、動作が極端に遅くなっている可能性があります。PC全体の動作を重くしている原因になりやすいです。
また、ここの数値が0でないときは、処理に対して物理スペックが足りていないということなので、処理を軽量化したり、メモリを増設等を検討する必要があります。

3. 親を知る (PPID)

リストの下の方に * PPID とありますが、これはプロセスの親子関係を知るのに便利です。

  • PPID (Parent Process ID): 親プロセスID
    • 意味: そのプロセスを起動させた「親」のIDです。
    • 解説: 「勝手に起動してくる謎のプロセス」がいる時、PPIDを辿ることで「誰(どのアプリ)がこいつを呼び出したのか」という犯人探しができます。

Z(見た目変更)補足

機能的には変わらないのでおまけ程度につかうコマンドですが、shift + z で見た目変更モードになり、そこで設定すると見た目を変更できます。

topコマンドの出力結果。linuxコマンドの使い方の紹介。

画像 通常出力

topコマンドの出力結果。Zオプションで表示の見た目を調整している。linuxコマンドの使い方の紹介。

画像 見た目変更後

まとめ

  • top: いつでもどこでも使える基本の監視ツール。
  • htop::見やすく進化した、監視ツール。
  • Mキー::メモリ使用率順に並び替える。
  • fキー:表示項目の編集

topのほうが硬派に詳細表示できて操作も(CUI操作に慣れたら)苦がないので、個人的にはtopのほうがおすすめです。

これで「何が動いているか」を見る目は養われました。 次回は、「メモリの空き容量」や「稼働時間」など、もう少し細かい数字をサクッと確認するコマンドを紹介します。

freeコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

【free】Linuxでメモリの空き容量を正しく確認する方法【Linuxコマンド入門 Part3-2】

メモリの使用量と空き容量を一発で確認する方法、linux freeコマンドについて、おすすめオプションも含めて紹介します。

第三回”Linuxコマンド入門 Part3 ~システムの状態確認とネットワークの基本~”では、linuxでどのようにCPUやメモリの状態を確認するか、ネットワークとの接続チェックなどの基本操作を解説しています。

linuxコマンドでシステムのメモリやCPUの状態、プロセスの詳細を確認する方法を紹介するシリーズのサムネイル 6 記事
シリーズ

Linuxコマンド入門 Part3 ~システムの状態確認とネットワークの基本~

Linuxのシステム管理コマンドや基本的なネットワーク関係コマンドを理解しよう。

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero