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

Linux基礎:ジョブを管理するコマンド

Linux基礎:ジョブを管理するコマンド

 Linux では、ユーザーが実行する処理単位を ジョブ (Job) と呼びます。ジョブは 1 行のコマンド入力に対応し、その中で複数のプロセスが生成される場合もあります。ジョブ管理は、シェル上で複数の作業を効率的に並行して行うために重要な仕組みです。

 ジョブには フォアグラウンドジョブ(端末を占有して実行するもの)と バックグラウンドジョブ(裏で実行され、端末操作がすぐ可能なもの)があります。バックグラウンド実行は、長時間かかる処理を行いつつ別の作業を進める際に有効です。

 Linux では & をコマンド末尾につけてバックグラウンドジョブを起動でき、jobs コマンドで実行中のジョブを確認できます。また、fgbg を利用することで、ジョブをフォアグラウンドとバックグラウンド間で切り替えることも可能です。ここでは、これらジョブ管理に関するコマンドの使い方を詳しく解説します。

1.ジョブの基本概念

1.1. ジョブとプロセスの違い

  • ジョブ:ユーザーがシェルに入力した 1 行のコマンドに対応する処理単位。
  • プロセス:システムが実際に実行している単位。ジョブ 1 つから複数のプロセスが生成されることもある。

図で表すと以下のようになります。

ジョブ(例:ls | grep txt | sort)
 ├─ プロセス1(ls)
 ├─ プロセス2(grep txt)
 └─ プロセス3(sort)

1.2. フォアグラウンドとバックグラウンド

  • フォアグラウンドジョブ:実行中はシェルが待機状態となり、処理が終わるまで次のコマンドを入力できない。
  • バックグラウンドジョブ:コマンド末尾に & をつけると裏で実行され、すぐに次のコマンドを受け付けられる。

2.ジョブを操作するコマンド

2.1. jobs コマンド

書式

jobs [オプション]

役割

現在のシェルで管理されているジョブの一覧を表示する。

主なオプション

オプション説明
-lプロセス ID (PID) を含めて表示
-n状態が変化したジョブのみ表示
-pプロセス ID のみを表示

使用例

[ user@rocky9 ~ ]$tail -f /var/log/messages &
[ user@rocky9 ~ ]$less /etc/services # Ctrl + z キーを押す 
[2]+  停止                  less /etc/services
[ user@rocky9 ~ ]$top # Ctrl + z キーを押す 
[3]+  停止                  top

[ user@rocky9 ~ ]$ jobs
[user@rocky9 ~]$ jobs
[1]   実行中               tail -f /var/log/messages &
[2]-  停止                  less /etc/services
[3]+  停止                  top

2.2. fg コマンド

書式

fg [%ジョブID]

役割

指定したジョブをフォアグラウンドで再開する。

使用例

[ user@rocky9 ~ ]$ fg %2

ジョブ ID 2 のジョブ (less /etc/services) をフォアグラウンドで再開します。

q キーを押して終了させます。

2.3. bg コマンド

書式

bg [%ジョブID]

役割

一時停止中のジョブをバックグラウンドで再開する。

使用例

[ user@rocky9 ~ ]$ bg %3

ジョブ ID 3 (top) をバックグラウンドで再開します。

2.4. & を使ったバックグラウンド起動

コマンド末尾に & をつけると最初からバックグラウンドで実行されます。

使用例

[user@rocky9 ~]$ less /etc/services &
[4] 7274

ここで [1] はジョブ ID、7274 は PID を表しています。

3.ジョブ管理の流れ

以下は典型的なジョブ操作の流れです。

$ コマンド          → フォアグラウンドで実行
  Ctrl + Z         → 一時停止
$ bg %ジョブID      → バックグラウンドで再開
$ fg %ジョブID      → フォアグラウンドに戻す
$ jobs             → ジョブの一覧を確認

これにより、ユーザーは効率的に複数の処理を並行して扱えます。

3.1. ジョブ操作

ジョブ操作を下図にまとめます。

まとめ

  • ジョブはユーザー側の処理単位であり、複数のプロセスを含むことがある。
  • フォアグラウンドジョブは端末を占有し、バックグラウンドジョブは裏で処理を続ける。
  • jobs コマンドでジョブを確認し、fgbg でフォアグラウンドとバックグラウンドを切り替えられる。
  • & を使えば最初からバックグラウンド実行が可能。

 ジョブ管理を活用することで、CUI 環境でも効率的に作業を進めることができ、Linux システムの操作性が大幅に向上します。