このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linux基礎:プロセスを管理するコマンド

プロセスを管理するコマンド
Linux システムでは、動作中のプログラムはすべて「プロセス」として管理されます。プロセスには固有の プロセス ID(PID) が割り当てられ、PID を用いることで個々のプロセスを識別し、監視や制御を行うことができます。システム管理者は、実行中のプロセスを把握し、リソースの使用状況を確認したり、不要なプロセスを終了させたりすることで、システムを安定して運用できます。
ここでは、プロセスを管理するための代表的なコマンドとして ps, pstree, top, kill, killall を紹介し、それぞれの使い方や出力例を Rocky Linux の環境で解説します。

1.プロセスの基本
1.1. プロセスとは
プログラムはストレージに保存されていますが、実行するとメモリに読み込まれて CPU によって処理されます。この動作中の状態を「プロセス」と呼びます。
すべてのプロセスは親プロセスから生成され(フォーク)、そこからさらに子プロセスを生み出します。この親子関係を理解することは、システム動作の把握に役立ちます。
1.2. プロセス ID (PID)
プロセスごとに一意の番号(PID)が割り当てられます。PID は、プロセスの状態を調べたり終了させる際に利用されます。複数の同名プログラムが同時に動作していても、PID によって区別が可能です。
2.プロセス情報を表示するコマンド
2.1. ps コマンド
書式
ps [オプション]役割
現在実行中のプロセスの情報を一覧表示します。
主なオプション
| オプション | 説明 |
|---|---|
| a | すべてのユーザーのプロセスを表示 |
| u | ユーザー名や詳細情報を表示 |
| x | 端末に関連付けられていないプロセスも表示 |
使用例
[user@rocky9 ~]$ ps
PID TTY TIME CMD
2972 pts/0 00:00:00 bash
4154 pts/0 00:00:00 psすべてのプロセスを表示する場合
[user@rocky9 ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.9 173988 16680 ? Ss 9月12 0:01 /usr/lib/s
root 2 0.0 0.0 0 0 ? S 9月12 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 9月12 0:00 [pool_work
root 4 0.0 0.0 0 0 ? I< 9月12 0:00 [kworker/R
(省略)2.2. pstree コマンド
書式
pstree [オプション]役割
プロセスの親子関係をツリー形式で表示します。
使用例
[user@rocky9 ~]$ pstree
systemd─┬─ModemManager───3*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VBoxDRMClient───5*[{VBoxDRMClient}]
├─VBoxService───8*[{VBoxService}]
├─accounts-daemon───3*[{accounts-daemon}]
├─alsactl
├─atd
├─auditd─┬─sedispatch
│ └─2*[{auditd}]
├─avahi-daemon───avahi-daem
(省略)ここから systemd が親となり、多数のサービスを生成していることが分かります。
2.3. top コマンド
書式
top役割
リアルタイムで CPU やメモリの使用状況を監視します。
主な表示項目
| 項目 | 説明 |
|---|---|
| PID | プロセス ID |
| USER | 実行ユーザー |
| %CPU | CPU 使用率 |
| %MEM | メモリ使用率 |
| COMMAND | 実行中のコマンド |
使用例
[ user@rocky9 ~ ]$ top
top - 14:51:08 up 19:54, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 219 total, 3 running, 216 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.5 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.5 hi, 0.2 si, 0.0 st
MiB Mem : 1771.5 total, 110.0 free, 1391.8 used, 452.6 buff/cache
MiB Swap: 2048.0 total, 1960.4 free, 87.6 used. 379.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2275 user 20 0 4213492 325468 67260 R 1.7 17.9 1:13.25 gnome-+
2935 user 20 0 855228 53412 35796 S 0.7 2.9 0:05.44 gnome-+
3910 root 20 0 0 0 0 I 0.3 0.0 0:00.65 kworke+
1 root 20 0 173988 16680 10832 S 0.0 0.9 0:01.47 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.06 kthrea+
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pool_w+
(省略)終了するには q を押します。
3.プロセスを制御するコマンド
3.1. kill コマンド
書式
kill -[シグナル] PID
kill -s [シグナル名] PID役割
指定したプロセスにシグナルを送ります。デフォルトは TERM(15) シグナルで終了を指示します。
主なシグナル
| シグナルID | シグナル名 | 動作 |
|---|---|---|
| 15 | TERM | 通常終了(デフォルト) |
| 9 | KILL | 強制終了 |
| 19 | STOP | 一時停止 |
| 18 | CONT | 再開 |
使用例
[user@rocky9 ~]$ gedit & # バックグラウンドで実行
[1] 6619
[user@rocky9 ~]$ kill -15 6619
[1]+ Terminated gedit3.2. killall コマンド
書式
killall [オプション] プロセス名役割
プロセス名を指定して終了させます。同名のプロセスが複数ある場合はすべて終了する点に注意が必要です。
使用例
[user@rocky9 ~]$ gedit & # バックグラウンドで実行
[1] 7088
[user@rocky9 ~]$ killall -9 gedit
[1]+ 強制終了 geditまとめ
- プロセスは実行中のプログラムであり、固有の PID を持つ。
psでプロセス一覧を表示し、pstreeで親子関係を確認できる。topでリアルタイムの監視が可能。- 不要なプロセスは
killやkillallで終了できる。 - シグナルを使い分けることで、通常終了・一時停止・強制終了などの制御が可能。
プロセス管理は Linux 管理の基礎であり、トラブルシューティングやシステムの安定稼働に直結する重要なスキルです。
