新Linux入門|プロセスとジョブの仕組みと管理の基礎

Linuxを使っていると、「プロセス」や「ジョブ」という言葉をよく聞きますよね。
どちらも「実行中の処理」に関係する言葉ですが、実は少し意味が違うんです。

この記事では、プロセスとジョブの違い関係性
そしてそれらを管理するための基本コマンドをやさしく解説します💪

⚙️ プロセスとは?

プロセス(Process)は、コンピュータ上で実行されているプログラムの実体です。
 たとえば、ターミナルで ls コマンドを実行すると、その瞬間に「lsプロセス」が作られて動き出します。

プロセスは、CPU時間・メモリ・ファイルディスクリプタなどのリソースを使って動作します。
そしてOS(Linuxカーネル)が、プロセスの生成・実行・終了を管理します。

項目説明
意味実行中のプログラムの実体
識別子プロセスID(PID)で一意に識別される。
管理者Linuxカーネルが生成・監視・終了を管理
構成要素実行コード、スタック、データ領域、ファイルハンドルなど

📘 プロセスの確認コマンド(ps)

プロセスの一覧を確認するには、ps コマンドを使います。

[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_]
(省略)
オプション説明
-eすべてのプロセスを表示
-f詳細情報を表示(親子関係や起動コマンドなど)
-u ユーザー名特定ユーザーのプロセスだけを表示

💬ポイント
 PID(プロセスID)は一意の番号で、PPID(親プロセスID)はそのプロセスを作ったプロセスを示します。

🧠 ジョブとは?

ジョブ(Job)とは、シェルが管理する1つ以上のプロセスのまとまりのことです。
 シェル(bashなど)は、コマンドを実行するたびに「ジョブ」を作り、その中でプロセスを動かします。

ジョブは、次の2つのモードで実行されます👇

実行モード説明
フォアグラウンドジョブ実行中はシェルが操作できなくなる(完了を待つ)
バックグラウンドジョブシェルの操作を妨げず、裏で実行を続ける。

💡ポイント
バックグラウンド実行はコマンドの末尾に & をつけます。

使用例

[suzuki@AlmaLinux ~]$ sleep 60 &
[1] 2185

ここで [1] はジョブ番号、2185 はプロセスID(PID)です。
sleep 60 は60秒間スリープするコマンドですが、& をつけることでバックグラウンド実行されました🎵

🔍 ジョブの確認と制御コマンド

ジョブはシェルが管理しているため、専用のコマンドで制御できます。

jobsコマンド(ジョブの一覧表示)

[suzuki@AlmaLinux ~]$ jobs
[1]+  Running                 sleep 60 &

fgコマンド(ジョブをフォアグラウンドに戻す)

[suzuki@AlmaLinux ~]$ fg %1
sleep 60

💬 %1 はジョブ番号を意味します。これでジョブがフォアグラウンドに切り替わります。

bgコマンド(ジョブをバックグラウンドで再開)

[suzuki@AlmaLinux ~]$ bg %1
[1]+ sleep 60 &

💬 Ctrl+Z で一時停止したジョブを再びバックグラウンドで動かしたいときに使います。

🔄 プロセスとジョブの関係

プロセスとジョブの関係は「1対多」で表せます。
1つのジョブには、1つ以上のプロセスが含まれます。
 パイプ( | )で複数コマンドをつなげた場合、それぞれが独立したプロセスとして同じジョブ内で動作します。

[suzuki@AlmaLinux ~]$ ps aux | grep bash | wc -l &
[1] 2210

💬ポイント
このジョブでは、ps → grep → wc の3つのプロセスが連携して動作しています。
シェルから見ると、これらは「1つのジョブ(Job 1)」として管理されます。

概念管理対象管理者実行単位
プロセス実行中の1つのプログラムLinuxカーネル個々の処理単位
ジョブ1つ以上のプロセスの集まりシェル(bashなど)作業単位(ユーザーが制御)

🧰 よく使うジョブ・プロセス管理コマンドまとめ

コマンド用途
psプロセス一覧を表示
jobsシェルで実行中のジョブを一覧表示
fgジョブをフォアグラウンドに戻す。
bgジョブをバックグラウンドで再開する。
killプロセスを終了させる(PIDまたはジョブ番号指定)
pstreeプロセスの親子関係をツリー表示
top実行中のプロセスをリアルタイムで監視

killコマンドの例

[suzuki@AlmaLinux ~]$ kill %1

💬ポイント
%1 はジョブ番号を意味し、このジョブに属するすべてのプロセスを終了します。

🌈 まとめ

  • プロセス は、実行中の1つのプログラムのこと。
  • ジョブ は、シェルが管理する「プロセスの集合体」。
  • jobs・fg・bg・kill コマンドで、ジョブを簡単に制御できる。
  • OS(カーネル)はプロセスを、シェルはジョブを管理する役割を持っている。

この2つの仕組みを理解すると、Linuxでのタスク制御がぐっとわかりやすくなります✨
次回は、ジョブ制御の実践編(Ctrl+Zやnohupなど) に進んでみましょう!