このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
LinuC入門|コマンド演習04

LinuCコマンド演習04概要
LinuCコマンド演習04では、1章で登場したコマンドについて、実際にAlmaLinuxのターミナルを操作しながら理解を深めます。
今回扱うのは、プロセスやシステムの稼働状況を確認するための基本コマンドです。
| コマンド | 主な役割 | 情報の更新方法 |
|---|---|---|
| ps | 実行中のプロセスを一覧表示する | 実行した時点の情報を表示 |
| pgrep | プロセス名などからPIDを検索する | 実行した時点の情報を表示 |
| top | プロセスやCPU、メモリの状況を監視する | 一定間隔で自動更新 |
| uptime | 稼働時間とロードアベレージを表示する | 実行した時点の情報を表示 |
| free | 物理メモリとスワップの使用状況を表示する | 実行した時点の情報を表示 |
この5つを組み合わせると、次のような確認ができます。
- サーバーがどのくらい稼働しているか
- システム全体にどの程度の負荷がかかっているか
- CPUやメモリを多く使用しているプロセスは何か
- 目的のプログラムが動いているか
- メモリにどの程度の余裕があるか
表示されるPID、CPU使用率、メモリ使用量、時刻などは、使用している環境によって異なります。実行例と同じ数値にならなくても問題ありません。
psコマンド
psは、実行中のプロセスを表示するコマンドです。表示内容は自動更新されず、psを実行した時点のスナップショットとして表示されます。
基本書式
ps [オプション]基本的な使用例
| コマンド | 説明 |
|---|---|
| ps | 現在の端末で動作している自分のプロセスを表示する |
| ps -f | プロセスを詳しい形式で表示する |
| ps -e | システム上のすべてのプロセスを表示する |
| ps -ef | すべてのプロセスを詳しい形式で表示する |
| ps aux | CPUやメモリの使用率を含めて、すべてのプロセスを表示する |
| ps -u suzuki | suzukiが実行しているプロセスを表示する |
psでは、ハイフンを付けるUNIX形式と、ハイフンを付けないBSD形式のオプションが利用されています。そのため、ps -efではハイフンを付けますが、ps auxではauxの前にハイフンを付けません。
psの主な表示項目
| 項目 | 意味 |
|---|---|
| USERまたはUID | プロセスを実行しているユーザー |
| PID | プロセスを識別する番号 |
| PPID | 親プロセスのPID |
| %CPU | CPU使用率 |
| %MEM | 物理メモリ使用率 |
| TTY | プロセスが使用している端末 |
| STAT | プロセスの状態 |
| TIME | プロセスが使用したCPU時間 |
| CMDまたはCOMMAND | 実行されたコマンド |
STATで表示される代表的な状態
| 状態 | 意味 |
|---|---|
| R | 実行中または実行可能な状態 |
| S | 割り込み可能な待機状態 |
| D | 割り込みできない待機状態 |
| T | 停止中の状態 |
| Z | 終了したが、親プロセスに回収されていないゾンビ状態 |
pgrepコマンド
pgrepは、プロセス名やユーザー名などの条件を指定して、該当するプロセスのPIDを検索するコマンドです。
psで一覧全体を表示する方法に対し、pgrepは目的のプロセスを直接探す場合に便利です。
基本書式
pgrep [オプション] 検索パターン基本的な使用例
| コマンド | 説明 |
|---|---|
| pgrep bash | プロセス名にbashを含むプロセスのPIDを表示する |
| pgrep -l bash | PIDとプロセス名を表示する |
| pgrep -a bash | PIDと完全なコマンドラインを表示する |
| pgrep -c bash | 該当するプロセス数を表示する |
| pgrep -u suzuki bash | suzukiが実行しているbashを検索する |
| pgrep -u suzuki -a sleep | suzukiが実行しているsleepのPIDとコマンドラインを表示する |
主なオプション
| オプション | 説明 |
|---|---|
| -l | PIDとプロセス名を表示する |
| -a | PIDと完全なコマンドラインを表示する |
| -c | 条件に一致したプロセス数を表示する |
| -u ユーザー名 | 指定した実効ユーザーのプロセスに限定する |
| -f | プロセス名だけでなく、完全なコマンドラインを検索する |
| -x | プロセス名が完全に一致するものだけを検索する |
条件に一致するプロセスが存在しない場合、pgrepは何も表示しません。エラーメッセージが表示されないため、何も表示されないこと自体が「該当するプロセスがない」という結果になります。
topコマンド
topは、システム全体の負荷、CPU、メモリ、プロセスの状態をリアルタイムに監視するコマンドです。表示内容は一定間隔で自動更新されます。
基本書式
top [オプション]基本的な使用例
| コマンド | 説明 |
|---|---|
| top | システム全体をリアルタイムに監視する |
| top -u suzuki | suzukiのプロセスに限定して表示する |
| top -d 5 | 5秒間隔で画面を更新する |
| top -b -n 1 | 情報を1回だけ表示して終了する |
top -b -n 1の-bはバッチモード、-n 1は更新回数を1回にする指定です。
topの上部に表示される情報
| 表示部分 | 確認できる内容 |
|---|---|
| top行 | 現在時刻、稼働時間、ログインユーザー数、ロードアベレージ |
| Tasks行 | プロセスの総数、実行中、待機中、停止中、ゾンビ状態の数 |
| %Cpu(s)行 | CPUの使用状況 |
| Mem行 | 物理メモリの使用状況 |
| Swap行 | スワップ領域の使用状況 |
CPU欄の代表的な項目
| 項目 | 意味 |
|---|---|
| us | ユーザープロセスが使用したCPU時間 |
| sy | カーネルが使用したCPU時間 |
| id | CPUが何もせず待機していた時間 |
| wa | ディスクなどのI/O完了を待っていた時間 |
| st | 仮想環境でほかの仮想マシンに使用されたCPU時間 |
topの基本操作キー
| キー | 動作 |
|---|---|
| q | topを終了する |
| P | CPU使用率順に並べる |
| M | メモリ使用率順に並べる |
| 1 | CPUごとの表示を切り替える |
| h | ヘルプを表示する |
topの上部には、稼働時間、ロードアベレージ、プロセス数、CPU、メモリなどが表示され、その下にプロセスの一覧が表示されます。
uptimeコマンド
uptimeは、システムの稼働時間とロードアベレージを1行で表示するコマンドです。
基本書式
uptime [オプション]実行例
suzuki@AlmaLinux:~$ uptime
10:20:15 up 2 days, 3:10, 1 user, load average: 0.10, 0.20, 0.15| 表示内容 | 意味 |
|---|---|
| 10:20:15 | 現在時刻 |
| up 2 days, 3:10 | 起動してから2日と3時間10分経過 |
| 1 user | ログインしているユーザー数 |
| 0.10 | 過去1分間のロードアベレージ |
| 0.20 | 過去5分間のロードアベレージ |
| 0.15 | 過去15分間のロードアベレージ |
ロードアベレージは、CPUを使用中または使用待ちのプロセスと、割り込みできないI/O待ち状態のプロセスの平均数です。単純なCPU使用率ではありません。
同じ1.00でも、論理CPUが1個の環境と4個の環境では意味が異なります。CPU数と負荷の推移を考えながら判断することが大切です。
主なオプション
| コマンド | 説明 |
|---|---|
| uptime -p | 稼働時間を読みやすい形式で表示する |
| uptime -s | システムを起動した日時を表示する |
freeコマンド
freeは、物理メモリとスワップ領域の使用状況を表示するコマンドです。情報は主に/proc/meminfoから取得されます。
基本書式
free [オプション]基本的な使用例
| コマンド | 説明 |
|---|---|
| free | メモリ容量をKiB単位で表示する |
| free -h | 容量に合わせてMiBやGiBなどの単位を自動選択する |
| free -m | MiB単位で表示する |
| free -g | GiB単位で表示する |
| free -s 5 | 5秒間隔で繰り返し表示する |
free -hの実行例
suzuki@AlmaLinux:~$ free -h
total used free shared buff/cache available
Mem: 7.5Gi 2.5Gi 1.6Gi 200Mi 3.4Gi 5.0Gi
Swap: 2.0Gi 0B 2.0Gi主な表示項目
| 項目 | 意味 |
|---|---|
| total | 使用可能なメモリの合計 |
| used | 使用中またはすぐには使用できないメモリ |
| free | 完全に未使用のメモリ |
| shared | 主にtmpfsなどで共有されているメモリ |
| buff/cache | バッファやキャッシュに使用されているメモリ |
| available | スワップを使わず、新しい処理に割り当てられると推定されるメモリ |
| Swap | スワップ領域の合計、使用量、空き容量 |
Linuxは、空いているメモリをキャッシュとして積極的に利用します。そのため、freeが少ないだけでメモリ不足とは判断できません。新しい処理に使用できるメモリを判断するときは、availableを重視します。
演習問題+模範解答例

演習01:psコマンド(現在の端末のプロセスを表示)
問題
現在の端末で動作している、自分のプロセスを表示してください。
模範解答例
suzuki@AlmaLinux:~$ ps
PID TTY TIME CMD
2340 pts/0 00:00:00 bash
2418 pts/0 00:00:00 ps解説
オプションを付けずにpsを実行すると、基本的には現在のユーザーが現在の端末で実行しているプロセスが表示されます。
bashは現在操作しているシェルです。psも実行中のプロセスであるため、結果の中に表示されます。
演習02:psコマンド(すべてのプロセスを詳しく表示)
問題
システム上で動作しているすべてのプロセスを、PPIDなどを含む詳しい形式で表示してください。
模範解答例
suzuki@AlmaLinux:~$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:00 ? 00:00:02 /usr/lib/systemd/systemd
root 780 1 0 09:01 ? 00:00:00 /usr/sbin/sshd
suzuki 2340 2339 0 10:15 pts/0 00:00:00 /usr/bin/bash
suzuki 2450 2340 0 10:25 pts/0 00:00:00 ps -ef解説
-eはすべてのプロセスを選択し、-fは詳しい形式で表示するオプションです。
PPIDを見ると、どのプロセスから起動されたのかが分かります。例えばbashからpsを実行した場合、psのPPIDにはbashのPIDが表示されます。
演習03:psコマンド(CPUとメモリの使用率を表示)
問題
システム上のすべてのプロセスについて、CPU使用率とメモリ使用率を含む一覧を表示してください。
模範解答例
suzuki@AlmaLinux:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 24100 14200 ? Ss 09:00 0:02 /usr/lib/systemd/systemd
suzuki 2340 0.0 0.0 15200 4100 pts/0 Ss 10:15 0:00 bash
suzuki 2500 0.0 0.0 16200 3800 pts/0 R+ 10:28 0:00 ps aux解説
ps auxでは、すべてのプロセスとCPU、メモリの使用率を確認できます。
この書式ではauxの前にハイフンを付けません。負荷の高いプロセスを調査するときは、%CPU、%MEM、COMMANDを確認します。
演習04:pgrepコマンド(プロセス名からPIDを検索)
問題
300秒間待機するsleepプロセスをバックグラウンドで起動してください。その後、suzukiが実行しているsleepプロセスのPIDと完全なコマンドラインを表示してください。
確認後は、表示されたPIDを指定してsleepプロセスを終了してください。
模範解答例
suzuki@AlmaLinux:~$ sleep 300 &
[1] 3521
suzuki@AlmaLinux:~$ pgrep -u suzuki -a sleep
3521 sleep 300
suzuki@AlmaLinux:~$ kill 3521解説
sleep 300 &の末尾にある&は、コマンドをバックグラウンドで実行する指定です。
pgrepでは次の条件を指定しています。
- -u suzukiで、suzukiのプロセスに限定する
- -aで、PIDと完全なコマンドラインを表示する
- sleepで、検索するプロセス名を指定する
3521は実行例のPIDです。実際には環境ごとに異なる番号が表示されます。最後のkillは、演習用に起動したsleepを終了するための後片付けです。
演習05:topコマンド(システムをリアルタイム監視)
問題
プロセス、CPU、メモリの状態をリアルタイムに表示してください。表示内容を確認した後、qキーで終了してください。
模範解答例
suzuki@AlmaLinux:~$ top
top - 10:30:15 up 2 days, 3:20, 1 user, load average: 0.10, 0.15, 0.12
Tasks: 180 total, 1 running, 179 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.0 us, 0.5 sy, 0.0 ni, 98.0 id, 0.5 wa
MiB Mem : 7680.0 total, 1600.0 free, 2500.0 used, 3580.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used確認が終わったらqキーを押します。
解説
topは、終了するまで情報を繰り返し更新します。
最初にロードアベレージ、CPUのidとwa、メモリのavailable相当の情報を確認します。その後、プロセス一覧の%CPUや%MEMを見ると、負荷の原因を調べやすくなります。
演習06:topコマンド(情報を1回だけ表示)
問題
topの情報を1回だけ表示し、自動的にコマンドを終了させてください。
模範解答例
suzuki@AlmaLinux:~$ top -b -n 1解説
-bは、対話操作を行わないバッチモードにするオプションです。-n 1は、表示回数を1回に指定します。
通常のtopとは異なり、qキーを押さなくても自動的に終了します。現在の状態を一度だけ確認したい場合や、結果をファイルへ保存したい場合の基本形です。
演習07:uptimeコマンド(稼働時間と負荷を表示)
問題
システムの稼働時間、ログインユーザー数、過去1分、5分、15分のロードアベレージを表示してください。
続けて、稼働時間だけを読みやすい形式で表示してください。
模範解答例
suzuki@AlmaLinux:~$ uptime
10:35:20 up 2 days, 3:25, 1 user, load average: 0.10, 0.20, 0.15
suzuki@AlmaLinux:~$ uptime -p
up 2 days, 3 hours, 25 minutes解説
通常のuptimeでは、現在時刻、稼働時間、ログインユーザー数、ロードアベレージが1行で表示されます。
ロードアベレージは左から過去1分、5分、15分です。短期的な変化を確認するときは過去1分、長い傾向を見るときは過去15分の値を確認します。
uptime -pでは、稼働時間を人が読みやすい形式で表示できます。
演習08:freeコマンド(メモリ使用状況を表示)
問題
物理メモリとスワップ領域の使用状況を、読みやすい単位で表示してください。
模範解答例
suzuki@AlmaLinux:~$ free -h
total used free shared buff/cache available
Mem: 7.5Gi 2.5Gi 1.6Gi 200Mi 3.4Gi 5.0Gi
Swap: 2.0Gi 0B 2.0Gi解説
-hを指定すると、容量に合わせてMiBやGiBなどの読みやすい単位が使われます。
確認するときは、freeだけでなくavailableにも注目します。freeが少なくても、buff/cacheとして再利用可能なメモリが多く、availableに余裕があれば、直ちにメモリ不足とは判断できません。
まとめ
LinuCコマンド演習04では、1章で登場したコマンドについて、プロセスとシステムリソースを確認する基本操作を演習しました。psでプロセスの一覧を確認し、pgrepで目的のPIDを検索し、topで変化をリアルタイムに監視できます。さらに、uptimeで稼働時間と負荷を確認し、freeでメモリの余裕を調べられます。まずuptimeとfreeで全体を確認し、top、ps、pgrepを使って詳しく調査する流れを身に付けておくと、サーバー管理や障害調査で役立ちます。
