新Linux入門|プロセスとは何か:Linuxで学ぶプログラム実行と管理の基本

Linuxを使っていると「プロセス」という言葉をよく耳にしますよね。
でも、「プログラム」と「プロセス」って何が違うの?という疑問を持つ方も多いと思います。

 実は、プログラムは“コードそのもの”、そしてプロセスは“そのコードが実際に動いている実体”なんです。
ここでは、プロセスの基本をやさしく解説していきます。

⚙️ プロセスとは?

プロセス(Process)とは、コンピュータ上で実行中のプログラムのことです。
Linuxでは、アプリケーションやシステムの内部処理はすべてプロセスとして動いています。

 たとえば、ターミナルでコマンドを実行したり、Webサーバーを動かしたりすると、そのたびに新しいプロセスが生成されます。

項目説明
定義実行中のプログラムの実体
管理単位CPU時間、メモリ、ファイルハンドルなどのリソースを1つの単位として扱う。
管理者OS(Linuxカーネル)がプロセスを生成・実行・終了まで管理する。
識別方法プロセスID(PID)で一意に識別される。

🧠 プロセスの特徴

Linuxのプロセスは、プログラムを動かすための独立した存在です。
 それぞれのプロセスは自分専用の領域(メモリやファイル)を持ち、他のプロセスと干渉しないように実行されます。

特徴内容
実行単位1つのプログラムを動かす独立した単位。
リソースの利用CPU時間・メモリ・ファイルシステム・ネットワークを使用する。
独立性各プロセスは他のプロセスと独立して動作。必要に応じて通信(IPC)も可能。
階層構造親プロセス → 子プロセスという構造を持つ。

💬ポイント
 たとえば、bash シェルがコマンドを実行すると、bash が親プロセス、実行されたコマンドが子プロセスとなります。

⚙️ プロセスの状態(State)

プロセスは常に変化しながら実行されています。
Linuxでは、プロセスは以下のような「状態」を持ちます👇

状態説明
実行中 (Running)CPUを使って実際に処理をしている状態。
待機中 (Waiting)入力やリソース待ちで停止中の状態。
停止中 (Stopped)一時停止され、再開を待っている状態。
終了 (Terminated)処理を終えて終了した状態。

💡 これらの状態は、ps コマンドで確認できます。

🔍 プロセスの確認コマンド

psコマンド(プロセスの一覧表示)

ps コマンドは、現在実行中のプロセスを確認するための基本コマンドです。

コマンド書式

ps [オプション]

主なオプション

オプション説明
-eすべてのプロセスを表示
-f詳細な情報を表示(親子関係を含む)
-u ユーザー名指定したユーザーのプロセスを表示
-auxBSD形式で全プロセスを表示(よく使われる)

使用例

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

💬ポイント

  • PID はプロセスID(個々の識別番号)
  • PPID は親プロセスのID
  • CMD は実行中のコマンド名

🌳 プロセスの階層構造を確認(pstreeコマンド)

プロセスの親子関係をツリー形式で確認するには、pstree コマンドが便利です。

コマンド書式

pstree [オプション]

主なオプション

オプション説明
-pプロセスID(PID)を表示
-u実行ユーザーを表示
-aコマンドライン引数を表示

使用例

[suzuki@AlmaLinux ~]$ pstree -p
systemd(1)─┬─ModemManager(796)─┬─{ModemManager}(822)
           │                   ├─{ModemManager}(831)
           │                   └─{ModemManager}(834)
           ├─NetworkManager(1108)─┬─{NetworkManager}(1110)
           │                      └─{NetworkManager}(1111)
           ├─VBoxDRMClient(1045)─┬─{VBoxDRMClient}(1053)
           │                     ├─{VBoxDRMClient}(1055)
           │                     ├─{VBoxDRMClient}(1057)
           │                     ├─{VBoxDRMClient}(1058)
           │                     └─{VBoxDRMClient}(6391)
           ├─VBoxService(1047)─┬─{VBoxService}(1051)
           │                   ├─{VBoxService}(1052)
           │                   ├─{VBoxService}(1054)
(省略)

💬ポイント
systemd(PID 1)が最初のプロセスであり、すべてのプロセスの親になっていることがわかります。

🧰 プロセスの管理(killコマンド)

プロセスを停止させたい場合は、kill コマンドを使用します。

コマンド書式

kill [オプション] PID

主なオプション

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

使用例

[root@AlmaLinux ~]# kill -9 1842

💬ポイント
この例では、プロセスID 1842(psコマンドのプロセス)を強制的に終了しています。
安全に終了させたい場合は kill -15(またはオプション省略)を使いましょう。

🌈 まとめ

  • プロセスとは、実行中のプログラムの実体
  • 各プロセスは独立して動作し、CPUやメモリなどのリソースを利用する。
  • Linuxでは ps・pstree・kill などのコマンドでプロセスを確認・管理できる。
  • すべてのプロセスは systemd(PID 1) から派生しており、親子関係で構成されている。

プロセスの仕組みを理解すると、Linuxの内部動作やサーバー管理がぐっとわかりやすくなります😊