新Linux入門|プロセスID(PID)とは:Linuxで学ぶプロセス識別と管理の仕組み

Linuxを操作していると、「PID(プロセスID)」という言葉をよく見かけますよね。
ps や top コマンドを実行すると必ず表示されるこの数字、実はとても重要なんです。

この記事では、「プロセスID(PID)」の仕組みと役割、
さらに関連する概念(PGID、SID)までわかりやすく解説していきます💪

⚙️ プロセスID(PID)とは?

 プロセスID(Process ID)は、Linuxカーネルが各プロセスを識別するために割り当てる一意の番号です。
 プロセスが生成されるたびに、新しいPIDが付与され、システム上でそのプロセスを区別できるようになります。

項目説明
名前プロセスID(PID:Process ID)
整数(int型)
割り当てカーネルが新しいプロセスを生成したときに自動的に付与される。
役割各プロセスを一意に識別・制御・監視するための番号
1(systemd), 2178(bash), 2234(sleep)など

💬ポイント
PIDはシステム全体で重複しないように管理されており、
プロセスが終了すると、そのPIDは再利用されることがあります。

🧠 PIDの役割

PIDは単なる番号ではなく、Linuxのプロセス管理における中核的な識別子です。
PIDがなければ、どのプロセスを監視・停止・再開するのか区別がつきません。

用途説明
プロセスの識別OSが各プロセスを区別して管理するために使用
制御killコマンドなどで特定のプロセスにシグナルを送る際に指定
監視ps, top などで動作状態を確認
通信プロセス間通信(IPC)で相手を特定する手段の一つ

💡ポイント
つまり、PIDは「住所」のようなもので、プロセスを正確に指し示すために欠かせません。

⚙️ PIDの特徴

PIDにはいくつかの性質があります👇

特性説明
一意性同時に存在するプロセスは異なるPIDを持つ
再利用終了したプロセスのPIDは、一定期間後に再利用される場合がある
割り当て順序通常は1から順に採番されるが、上限に達すると再利用される
systemdのPID起動直後に生成される最初のプロセス(PID=1)で、全プロセスの親となる

💬ポイント
つまり、PID=1 の systemd は “Linuxの親分” のような存在です。
すべてのプロセスは最終的に systemd を親に持っています。

🔍 プロセスIDの確認(ps / top コマンド)

PIDを確認する最も基本的な方法は ps コマンドです。

コマンド書式

ps [オプション]

主なオプション

オプション説明
-eすべてのプロセスを表示
-f詳細情報を表示(親子関係や実行コマンドなど)
-u ユーザー名指定したユーザーのプロセスだけを表示

使用例

[root@AlmaLinux ~]# ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 11月28 ?      00:00:00 /usr/lib/systemd/systemd --switched-root --system --
root           2       0  0 11月28 ?      00:00:00 [kthreadd]
root           3       2  0 11月28 ?      00:00:00 [pool_workqueue_]
root           4       2  0 11月28 ?      00:00:00 [kworker/R-rcu_g]
root           5       2  0 11月28 ?      00:00:00 [kworker/R-sync_]
(省略)

💬ポイント

  • PID:プロセスのID
  • PPID:親プロセスのID
  • CMD:実行中のコマンド名

この例では、bash のPIDは 2182、その子プロセスである sleep は 2234 です。

📊 topコマンドでリアルタイム監視

top コマンドでは、システム上のプロセスとPIDをリアルタイムで確認できます。

[suzuki@AlmaLinux ~]$ top

top - 02:01:41 up  2:14,  2 users,  load average: 0.00, 0.00, 0.00
Tasks: 220 total,   1 running, 218 sleeping,   0 stopped,   1 zombie
%Cpu(s):  0.7 us,  1.4 sy,  0.0 ni, 96.8 id,  0.0 wa,  1.2 hi,  0.0 si,  0.0 st
MiB Mem :   1707.2 total,    192.5 free,    983.0 used,    714.1 buff/cache
MiB Swap:   2048.0 total,   2045.0 free,      3.0 used.    724.2 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                          
   4982 suzuki    20   0 4090884 316764 142160 S   6.3  18.1   0:09.14 gnome-shell                      
   6373 suzuki    20   0  853572  62384  48252 S   1.3   3.6   0:01.32 gnome-terminal

(省略)

(ここで Ctrl + Z を押す)
[1]+  Stopped                 top
列名意味
PIDプロセスID
USER実行ユーザー
PR優先度(Priority)
NInice値(CPU優先度の調整)
TIME+実行時間合計
COMMAND実行中のコマンド

💬ポイント
top は ps よりも動的に変化を観察できる便利ツールです。

🧩 関連する識別子:PGIDとSID

Linuxのプロセスは、PIDだけでなく「プロセスグループ」や「セッション」にも属しています。
これにより、複数のプロセスをまとめて管理できます。

識別子名称役割
PIDProcess ID各プロセスを一意に識別する
PPIDParent Process ID親プロセスの識別子
PGIDProcess Group ID同じグループに属するプロセスをまとめて制御する
SIDSession IDセッション全体をまとめる識別子。ログインセッション単位で管理される

確認コマンド例

[suzuki@AlmaLinux ~]$ ps -o pid,ppid,pgid,sid,cmd | head

出力例

  PID  PPID  PGID   SID CMD
    1     0     1     1 /usr/lib/systemd/systemd
 2170  2160  2170  2170 -bash
 2234  2170  2234  2170 sleep 100
(省略)

💬ポイント
この出力から、bash がセッションリーダー(SID=2170)で、
その子プロセス sleep は同じセッション(2170)に属していることがわかります。

🧰 PIDを使ったプロセス制御(killコマンド)

PIDを使ってプロセスを停止・終了するには、kill コマンドを使用します。

コマンド書式

kill [オプション] PID

主なオプション

オプション説明
-l使用可能なシグナル一覧を表示
-9強制終了(SIGKILL)
-15通常終了(SIGTERM、デフォルト)

使用例

[suzuki@AlmaLinux ~]$ kill -9 2234

💬ポイント
PID 2234 のプロセス(sleep 100)を強制的に終了します。
システムを安全に保つためには、kill -15(通常終了)を優先的に使いましょう。

🌈 まとめ

  • PID(プロセスID) は、すべてのプロセスを識別・管理するための番号。
  • PPID・PGID・SID などと連携して、階層的にプロセスを管理できる。
  • ps や top でPIDを確認し、kill コマンドで制御が可能。
  • PIDを理解すれば、プロセスの監視・制御・トラブル対応がスムーズになる✨

Linuxのプロセス管理は、システム運用の基本中の基本。
PIDの仕組みをしっかり理解しておくことで、トラブル時にも落ち着いて対応できます😊