このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

新Linuxコマンド演習54

新Linuxコマンド演習54 概要

新Linuxコマンド演習54」では、ジョブ管理コマンド(jobs・fg・bg) を使用して、
シェル上で複数のプロセスを効率的に制御する方法を学びます。

Linuxのシェルでは、1つのターミナルで複数のジョブを同時に実行できます。
 たとえば、一時停止したジョブを再開したり、バックグラウンドで実行しているジョブをフォアグラウンドに戻すことが可能です。
この仕組みを理解することで、コマンド操作を中断せずに効率よく作業を進められます。

ジョブ管理に関する主要コマンド

コマンド主な目的使用例説明
jobs実行中・停止中のジョブ一覧を表示jobsジョブの状態(実行中・停止中)を確認
fgジョブをフォアグラウンドに移動fg %1指定ジョブを前面に戻して操作再開
bg一時停止中のジョブをバックグラウンドに再開bg %2停止ジョブをバックグラウンドで再実行

表の説明
これら3つのコマンドは、同一ターミナル内でのジョブ制御専用です。
「%ジョブ番号」を使って対象ジョブを指定します。
「jobs」でジョブ一覧を確認してから「fg」または「bg」を使用するのが基本的な流れです。

ジョブの状態を表す記号

記号意味
+直前に操作したジョブ(現在のジョブ)
-直前の前に操作したジョブ(次候補のジョブ)

表の説明
jobsコマンドで表示される「+」「-」は、ジョブの優先順位を表します。
「fg」や「bg」コマンドでジョブ番号を省略した場合、「+」マークのジョブが対象になります。

演習問題+模範解答例

演習01:バックグラウンドでジョブを開始する

問題
sleepコマンドをバックグラウンドで実行し、ジョブIDとプロセスIDを確認してください。

模範解答例

[suzuki@AlmaLinux ~]$ sleep 1000 &
[1] 3331

解説
コマンド末尾の「&」でジョブをバックグラウンド実行します。
[1] はジョブID、3331 はプロセスIDです。
ジョブIDはターミナルごとに一意、プロセスIDはシステム全体で一意に割り当てられます。

演習02:バックグラウンドで実行していたジョブをフォアグラウンドに移動する

問題
バックグラウンドで実行していたsleepジョブをフォアグラウンドに移動してください。

模範解答例

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

解説
fg %1 でジョブ番号1番のジョブをフォアグラウンドに戻します。
% は「ジョブIDで指定する」ことを示します。
フォアグラウンドに戻ると、ジョブが完了するまでターミナルが占有されます。

演習03:フォアグラウンドで開始したジョブを一時停止する

問題
フォアグラウンドで実行中のsleepジョブを一時停止してください。

模範解答例

[suzuki@AlmaLinux ~]$ sleep 1000
^Z
[1]+  停止                  sleep 1000
[suzuki@AlmaLinux ~]$

解説
Ctrl + Z を押すと、現在のフォアグラウンドジョブが一時停止(Stopped)します。
この状態ではCPUを使用せず、後で再開(bgまたはfg)できます。

演習04:一時停止したジョブをバックグラウンドに移動して再開する

問題
停止中のsleepジョブをバックグラウンドで再開してください。

模範解答例

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

解説
bg %1 でジョブ番号1番をバックグラウンドに再開します。
再開後、& が付いた形で表示され、ジョブが裏で継続されます。

演習05:実行中のジョブの状態を確認する

問題
現在実行中のジョブの状態を確認してください。

模範解答例

[suzuki@AlmaLinux ~]$ jobs
[1]+  実行中               sleep 1000 &

解説
jobs コマンドでジョブの一覧と状態(実行中・停止中)を表示します。
ジョブ番号・状態・コマンド内容が一目でわかります。

演習06:ジョブをもう1つ追加実行する

問題
新たに sleep 2000 をバックグラウンドで実行してください。

模範解答例

[suzuki@AlmaLinux ~]$ sleep 2000 &
[2] 4034

解説
2つ目のジョブが起動され、ジョブIDは[2]として登録されます。
複数ジョブを並行実行する場合、jobsコマンドで一覧管理できます。

演習07:複数ジョブの状態を確認する

問題
現在実行中のジョブの状態を確認してください。

模範解答例

[suzuki@AlmaLinux ~]$ jobs
[1]-  実行中               sleep 1000 &
[2]+  実行中               sleep 2000 &

解説
+ は現在のジョブ(最も新しいジョブ)、- はその前のジョブを意味します。
ジョブ番号を指定せずに fg を実行すると、+ のジョブが対象になります。

まとめ

 「新Linuxコマンド演習54」では、シェル上でジョブを効率的に管理するための3つのコマンドを学びました。
以下にジョブ操作を図にまとめます。

学習ポイント

  • jobs:ジョブの状態を一覧表示
  • fg %ジョブID:ジョブをフォアグラウンドに復帰
  • bg %ジョブID:停止ジョブをバックグラウンドで再開

💡 補足
複数ジョブを扱う際は、jobsで確認しながら操作するのが安全です。
ジョブ管理の仕組みを理解すれば、ターミナル操作中に長時間実行する処理を効率的に制御できます。