🎯 この記事で学べること
- 1`top`コマンドの基本的な使い方と画面の見方をマスターできます
- 2CPU使用率、メモリ使用量、負荷平均の意味を理解できます
- 3対話的な操作(ソート、フィルタ、プロセス制御)ができるようになります
- 4システムの問題を素早く発見し、原因を特定する方法を学べます
- 5バッチモードを使った自動監視スクリプトの作成方法がわかります
読了時間: 約10分
システムの健康状態をリアルタイムで見よう!
こんにちは!今回は、Linuxシステムの「健康診断」ができるtop
コマンドについて学んでいきましょう。
パソコンが重い時、「何が原因だろう?」と思ったことはありませんか?Windowsならタスクマネージャーを開きますよね。Linuxでは、top
コマンドがその役割を果たしてくれます。しかも、もっと詳しい情報が見られるんですよ!
基本的な使い方
まずは起動してみよう
top
コマンドは、とてもシンプルに起動できます:
$ top
すると、こんな画面が表示されます(自動的に更新され続けます):
top - 15:20:30 up 10 days, 3:45, 2 users, load average: 0.15, 0.20, 0.18
Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.3 us, 2.1 sy, 0.0 ni, 92.3 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
MiB Mem : 16000.0 total, 2000.0 free, 8000.0 used, 6000.0 buff/cache
MiB Swap: 8000.0 total, 8000.0 free, 0.0 used. 7500.0 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 user 20 0 500000 50000 20000 S 25.0 3.1 1:23.45 firefox
5678 user 20 0 300000 30000 15000 S 12.5 1.9 0:45.67 code
top
は対話的なツールです。画面がリアルタイムで更新されるので、終了したい時はq
キーを押してくださいね!
画面の見方をマスターしよう
システム概要(ヘッダー部分)
画面の上部には、システム全体の状態が表示されています。一つずつ見ていきましょう!
1行目:基本情報
top - 15:20:30 up 10 days, 3:45, 2 users, load average: 0.15, 0.20, 0.18
- 15:20:30 - 現在時刻
- up 10 days, 3:45 - システムが起動してからの時間(10日と3時間45分)
- 2 users - ログイン中のユーザー数
- load average: 0.15, 0.20, 0.18 - 負荷平均(1分、5分、15分)
負荷平均は、CPUコア数と比較して見ましょう。4コアのCPUなら、負荷平均が4.0でちょうど100%使用中という意味です!
2行目:タスク(プロセス)の状態
Tasks: 256 total, 1 running, 255 sleeping, 0 stopped, 0 zombie
- total - プロセスの総数
- running - 実行中(CPUを使用中)
- sleeping - 待機中(正常な状態)
- stopped - 停止中
- zombie - ゾンビプロセス(問題があるかも!)
3行目:CPU使用率の内訳
%Cpu(s): 5.3 us, 2.1 sy, 0.0 ni, 92.3 id, 0.2 wa, 0.0 hi, 0.1 si, 0.0 st
- us (user) - ユーザープログラムが使用
- sy (system) - システム(カーネル)が使用
- id (idle) - 何もしていない(これが高いと余裕がある)
- wa (wait) - ディスクI/O待ち(高いと遅い原因かも)
4-5行目:メモリ使用状況
MiB Mem : 16000.0 total, 2000.0 free, 8000.0 used, 6000.0 buff/cache
MiB Swap: 8000.0 total, 8000.0 free, 0.0 used. 7500.0 avail Mem
- total - 総メモリ量
- free - 未使用メモリ
- used - 使用中メモリ
- buff/cache - バッファ・キャッシュ(必要に応じて解放される)
- avail Mem - 実際に利用可能なメモリ(これが重要!)
「free」が少なくても慌てないで!Linuxは効率化のためにメモリをキャッシュに使います。「avail Mem」を見ましょう。
プロセス一覧の見方
各プロセスの情報が表示されます:
- PID - プロセスID(プロセスの番号)
- USER - 実行ユーザー
- %CPU - CPU使用率
- %MEM - メモリ使用率
- TIME+ - 累計CPU使用時間
- COMMAND - 実行コマンド
🎮 理解度チェック
Q1: 負荷平均が「2.0, 1.5, 1.0」で、CPUが2コアの場合、システムの状態は?
対話的な操作をマスターしよう
top
の本当の力は、実行中の操作にあります!
ソート操作(これが便利!)
| キー | 機能 | 使いどころ | |-----|------|-----------| | P | CPU使用率でソート | どのプロセスがCPUを食っているか調べる | | M | メモリ使用率でソート | メモリを大量に使っているプロセスを見つける | | T | 実行時間でソート | 長時間動いているプロセスを確認 | | N | PID順でソート | プロセスIDで整理して見たい時 |
システムが重い時は、まずP
キーを押してCPU使用率でソート!犯人がすぐ見つかりますよ。
表示の切り替え
| キー | 機能 | |-----|------| | 1 | CPU別の使用率を表示(マルチコアの場合) | | t | タスク/CPU表示の切り替え | | m | メモリ表示の切り替え | | c | コマンドの完全パス表示 | | V | プロセスツリー表示 |
プロセスを操作する
| キー | 機能 | 注意点 | |-----|------|--------| | k | プロセスを終了(kill) | PIDを入力後、シグナルを選択 | | r | 優先度(nice値)を変更 | マイナス値にはroot権限が必要 |
フィルタリング
| キー | 機能 | |-----|------| | u | 特定ユーザーのプロセスのみ表示 | | o | カスタムフィルターを追加 | | = | すべてのフィルターをクリア |
🎮 理解度チェック
Q2: メモリを大量に使っているプロセスを見つけたい時、最初に押すキーは?
起動オプションを活用しよう
更新間隔を変更
# 1秒ごとに更新(デフォルトは3秒)
$ top -d 1
# 0.5秒ごとに高速更新
$ top -d 0.5
バッチモード(スクリプトで使える!)
# 1回だけ実行して終了
$ top -b -n 1
# CPU使用率TOP10を取得
$ top -b -n 1 | head -17 | tail -10
# ログファイルに保存
$ top -b -n 1 > system_status.log
特定のプロセスだけ監視
# 特定のPIDを監視
$ top -p 1234
# 複数のPIDを監視
$ top -p 1234,5678
# firefoxのプロセスを監視
$ top -p $(pgrep firefox | tr '\n' ',')
実践的な使い方
システムが重い原因を調査
#!/bin/bash
# CPU使用率が高いプロセスを記録
echo "=== High CPU Processes at $(date) ===" >> cpu_log.txt
top -b -n 1 | awk 'NR>7 && $9>20.0 {print $0}' >> cpu_log.txt
メモリ不足の監視
#!/bin/bash
# 利用可能メモリが1GB以下になったら警告
while true; do
avail=$(top -b -n 1 | grep "avail Mem" | awk '{print $8}')
if (( $(echo "$avail < 1000" | bc -l) )); then
echo "警告: 利用可能メモリが少なくなっています: ${avail}MB"
fi
sleep 60
done
定期的なシステム状態の記録
#!/bin/bash
# 5分ごとにシステム状態を記録
LOG_DIR="/var/log/system_monitor"
mkdir -p $LOG_DIR
while true; do
timestamp=$(date +%Y%m%d_%H%M%S)
top -b -n 1 > "$LOG_DIR/top_${timestamp}.log"
sleep 300
done
カスタマイズと設定
よく使う設定を保存
topの画面で設定を変更した後、W
(大文字)を押すと設定が保存されます:
# 設定ファイルの場所
~/.toprc
カラー表示の設定
z
- カラー表示のON/OFFZ
- カラースキームの変更
表示フィールドのカスタマイズ
f
キーを押すと、表示するフィールドを選択できます。よく追加されるフィールド:
- PPID - 親プロセスID
- nTH - スレッド数
- P - 最後に使用したCPU
トラブルシューティング
負荷平均が高い場合
# CPUコア数を確認
$ nproc
4
# 負荷平均が4を超えていたら高負荷
# topでCPU使用率の高いプロセスを特定
メモリ不足の診断
- avail Memを確認(これが重要!)
- スワップ使用量が増えていないか確認
M
キーでメモリ使用量順にソート
ゾンビプロセスの対処
# ゾンビプロセスの親を見つける
$ ps aux | grep defunct
$ kill -TERM 親プロセスID
🎮 理解度チェック
Q3: topのバッチモードを使う主な目的は?
より高度なツール
htop(見やすい!)
$ sudo apt install htop # Ubuntu/Debian
$ htop
# マウスでクリックできる
# カラフルで見やすい
# プロセスツリーが標準表示
glances(総合監視)
$ pip install glances
$ glances
# ネットワーク、ディスク情報も表示
# Webインターフェースもある
ベストプラクティス
エイリアスを作ろう
# ~/.bashrcに追加
alias topc='top -o %CPU' # CPU順
alias topm='top -o %MEM' # メモリ順
alias topu='top -u $USER' # 自分のプロセスのみ
監視の自動化
#!/bin/bash
# 高負荷を自動検出して通知
check_high_load() {
load=$(uptime | awk -F'load average:' '{print $2}' | awk -F, '{print $1}')
cores=$(nproc)
if (( $(echo "$load > $cores" | bc -l) )); then
echo "高負荷検出: Load=$load (CPU=$cores cores)"
# メール送信やSlack通知など
fi
}
# 5分ごとにチェック
while true; do
check_high_load
sleep 300
done
📝 まとめ
今回はtop
コマンドについて学びました!
top
はシステムの状態をリアルタイムで監視するツール- CPU使用率、メモリ使用量、負荷平均などが一目でわかる
P
でCPU順、M
でメモリ順にソートが基本操作q
で終了、k
でプロセス終了、r
で優先度変更- バッチモード(
-b
)でスクリプト化も可能
top
コマンドは、システムの「健康診断」をする医者のようなもの。定期的にチェックすることで、問題を早期発見できます。まずは起動して、P
とM
キーを使ってみることから始めましょう!
次はdfとduコマンドでディスク使用量の確認方法を学びます。システムリソースの監視を完璧にマスターしましょう!
YouTube動画で復習
動画でさらに詳しく学びたい方は、CommandAcademyのYouTubeチャンネルをチェック!視覚的にコマンドの動作を確認できます。
最初は情報量が多くて圧倒されるかもしれませんが、基本的には「CPU使用率」と「メモリ使用量」を見ることから始めれば大丈夫です。慣れてきたら、他の情報も活用していきましょう!