カテゴリ: Linux 更新日: 2026/02/17

LinuxのプロセスID(PID)とは?仕組みと管理方法を初心者向けに徹底解説

LinuxのプロセスID(PID)とは?仕組みを理解する
LinuxのプロセスID(PID)とは?仕組みを理解する

先生と生徒の会話形式で理解しよう

生徒

「Linuxを使っていると『プロセス』とか『PID』という言葉をよく聞くのですが、これって何のことですか?」

先生

「簡単に言うと、Linuxの中で動いている『プログラム一つひとつに割り振られた背番号』のことですよ。」

生徒

「背番号ですか!それがあると、コンピュータはどう助かるんですか?」

先生

「たくさんのプログラムが同時に動いても、誰が何をしているか見分けるために必要なんです。基本からゆっくり説明しますね。」

1. プロセスとプロセスID(PID)の基本

1. プロセスとプロセスID(PID)の基本
1. プロセスとプロセスID(PID)の基本

Linuxの世界では、ブラウザを開いたり、ファイルをコピーしたり、コマンドを実行したりするたびに、裏側で「プログラム」が動いています。この実行中のプログラムのことを、Linuxでは「プロセス」と呼びます。

そして、コンピュータの中には同時に何百、何千というプロセスが存在しています。Linuxカーネル(OSの中核となる管理担当者)が、これら大量のプロセスを混乱せずに管理するために付ける識別番号が「プロセスID(PID:Process ID)」です。

例えば、学校の出席番号や、役所の受付票の番号をイメージしてください。名前が同じ「田中さん」が二人いても、番号が違えば別人だとわかりますよね。それと同じで、同じプログラムを二つ起動しても、それぞれに違うPIDが割り振られるため、Linuxは正確に区別できるのです。

2. プロセスの親子関係を知ろう

2. プロセスの親子関係を知ろう
2. プロセスの親子関係を知ろう

Linuxのプロセスには「親子関係」という面白い仕組みがあります。何かのプログラムが別のプログラムを起動したとき、元々のプログラムを「親プロセス」、新しく作られた方を「子プロセス」と呼びます。

このとき、子プロセスは自分の番号(PID)だけでなく、自分を生んだ親の番号も覚えています。これを「親プロセスID(PPID:Parent Process ID)」と言います。家系図のように、すべてのプロセスは辿っていくと、システムが起動したときに最初に作られる特別なプロセスに行き着きます。

もし親プロセスが終了してしまったのに、子プロセスだけが残ってしまうと「孤児プロセス」になります。また、仕事が終わったのにリストから消えずに残っているものを「ゾンビプロセス」と呼んだりします。これらはLinuxを安定して動かすための重要なキーワードです。

3. psコマンドで動いているプロセスを見てみよう

3. psコマンドで動いているプロセスを見てみよう
3. psコマンドで動いているプロセスを見てみよう

今、自分のLinuxでどんなプロセスが動いていて、どんなPIDが付いているのかを確認するには、psコマンドを使います。まずは一番シンプルな方法で実行してみましょう。


ps
  PID TTY          TIME CMD
 1234 pts/0    00:00:00 bash
 5678 pts/0    00:00:00 ps

実行結果を見ると、PIDという列がありますね。これがプロセスIDです。CMDはそのプロセスを起動したコマンド名です。上の例では、操作画面である「bash」と、今実行した「ps」というコマンド自身の二つが動いていることがわかります。

全てのユーザーが動かしているプロセスを詳しく見たいときは、auxというオプションを付けて実行するのが一般的です。これにより、システム全体で何が起きているか丸見えになります。

4. 特定のプロセスのPIDを調べる方法

4. 特定のプロセスのPIDを調べる方法
4. 特定のプロセスのPIDを調べる方法

たくさんのプロセスの中から、特定のプログラムのPIDだけを知りたいときがあります。例えば「Webサーバーが動いているか確認したい」「調子の悪いアプリの番号を知りたい」といった場面です。そんな時は、pgrepコマンドが便利です。

例えば、システムにログインするためのプログラムである「sshd」のPIDを探してみましょう。


pgrep sshd
850

このように、数字だけが返ってきます。この「850」が、そのプログラムに割り当てられた固有の番号です。また、ps auxgrepという検索コマンドを組み合わせて、より詳細な情報を取得することもよく行われます。


ps aux | grep sshd
root       850  0.0  0.1  15824  7104 ?        Ss   Jan08   0:00 /usr/sbin/sshd -D
user      9999  0.0  0.0   6432  2120 pts/0    S+   10:00   0:00 grep --color=auto sshd

この長い結果の2列目にあるのがPIDです。これを使えば、特定のプログラムを狙い撃ちで操作できるようになります。

5. 止まらなくなったプロセスを終了させる(killコマンド)

5. 止まらなくなったプロセスを終了させる(killコマンド)
5. 止まらなくなったプロセスを終了させる(killコマンド)

PIDを知る最大のメリットの一つは、暴走して止まらなくなったプログラムを強制的に終了させることができる点です。これには「kill(キル)」という物騒な名前のコマンドを使います。

使い方は簡単で、kill [PID]と入力するだけです。これは「その番号のプロセスに対して、『終わってください』という合図(シグナル)を送る」という意味になります。


kill 5678

もし、通常のkillで終了してくれない頑固なプロセスの場合は、最終手段として-9というオプションを付けます。これは「強制終了」を意味し、プログラムに猶予を与えず即座に停止させます。


kill -9 5678

ただし、保存していないデータがある場合などは消えてしまう可能性があるので、強制終了は慎重に行いましょう。また、自分以外のユーザーのプロセスを終了させるには、管理者権限が必要になります。

6. リアルタイムでプロセスを監視する(topコマンド)

6. リアルタイムでプロセスを監視する(topコマンド)
6. リアルタイムでプロセスを監視する(topコマンド)

これまでは「その瞬間の状態」を見るコマンドでしたが、パソコンのタスクマネージャーのように、刻一刻と変わる動きを見たい場合はtopコマンドを使います。これがエンジニアが最もよく使う監視ツールの一つです。


top
top - 10:15:20 up 1 day,  2:30,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 120 total,   1 running, 119 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   1984.4 total,   1250.2 free,    240.5 used,    493.7 buff/cache

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  850 root      20   0   15824   7104   6020 S   0.3   0.4   0:00.15 sshd
    1 root      20   0  168432  11232   8240 S   0.0   0.6   0:01.42 systemd

この画面では、どのプロセスがCPU(コンピュータの頭脳)をたくさん使っているか、メモリをどれくらい消費しているかが一目でわかります。一番上の行にPID 1とありますが、これはLinuxが起動したときに最初に生まれる、すべてのプロセスの「ご先祖様」にあたります。

topコマンドを終了したいときは、キーボードの「q」を押せば元の画面に戻れます。初心者の方は、まずこの画面を眺めて「ああ、私のコンピュータの中では今こんなにたくさんの番号(PID)が動いているんだな」と感じることから始めてみてください。

7. 管理者権限が必要なプロセス管理

7. 管理者権限が必要なプロセス管理
7. 管理者権限が必要なプロセス管理

Linuxでは、セキュリティのために「自分に関係ないプロセス」を勝手にいじることができないようになっています。他のユーザーが動かしているプログラムや、システム全体に関わる重要なプロセスを操作するには、「root(ルート)」と呼ばれる最強の管理者権限が必要です。

例えば、システム全体に関わるPIDを操作する際は、コマンドの前にsudoを付けて実行します。


sudo kill 850

ルートユーザーでの操作は非常に強力で、間違ったPIDを指定して終了させてしまうと、Linux自体の動作が不安定になったり、突然再起動したりすることもあります。PIDを指定するときは、必ずpsコマンドなどで「その番号が本当に止めていいものか」を確認する癖をつけましょう。

8. ジョブとプロセスの違いについて

8. ジョブとプロセスの違いについて
8. ジョブとプロセスの違いについて

最後に、よく混同される「ジョブ」との違いを説明します。どちらもプログラムの実行を指しますが、見ている視点が違います。

プロセスは「OS(システム)」から見た管理単位です。PIDという番号で、システム全体の中で厳密に管理されます。それに対してジョブは「ユーザー(あなた)」から見た作業単位です。あなたがターミナルで入力した一つの命令が一つのジョブになります。

例えば、大きなファイルをダウンロードしながら別の作業をしたいとき、ジョブを「バックグラウンド(裏側)」に回すことができます。このとき、裏で動いているジョブにも必ずPIDが割り振られています。つまり、ジョブは私たちが操作する時の呼び名で、その実体はOSがPIDで管理するプロセスである、と考えると分かりやすいでしょう。

カテゴリの一覧へ
新着記事
New1
AWS PrivateLink
AWS PrivateLinkのユースケースと業界別活用事例|セキュアな通信の決定版
New2
AWS PrivateLink
AWS PrivateLinkのログ取得とトラブル対応手順を完全ガイド!初心者でもわかるセキュアな接続確認方法
New3
ファイル・ディレクトリ構造
Linuxの/etcディレクトリとは?設定ファイルの役割を初心者向けに徹底解説
New4
AWS Lambda
AWS Lambdaでログを確認する方法を完全解説!CloudWatch Logsで初心者でも安心運用
人気記事
No.1
Java&Spring記事人気No1
S3(オブジェクトストレージ)
AWS S3の料金体系をわかりやすく解説
No.2
Java&Spring記事人気No2
Linux ディストリビューション
Linuxディストリビューションとは?OSとの関係や初心者におすすめの種類を徹底解説!
No.3
Java&Spring記事人気No3
ELB(ロードバランサー)
AWS ELBでターゲットグループを設定する方法を初心者向けに解説!
No.4
Java&Spring記事人気No4
シェルとターミナル基礎
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.5
Java&Spring記事人気No5
Linux ディストリビューション
Ubuntuとは何か?特徴と向いている用途を初心者向けに徹底解説!
No.6
Java&Spring記事人気No6
AWS 基本
AWSのサービスのステータス確認方法(AWS Health Dashboard)
No.7
Java&Spring記事人気No7
RDS(データベース)
AWS RDSのセキュリティグループ設定方法を解説!初心者でも安心のクラウドデータベース対策
No.8
Java&Spring記事人気No8
ELB(ロードバランサー)
AWSのNetwork Load Balancer(NLB)の特徴と使い方を解説!初心者向けロードバランサー入門