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

【Linux】ジョブの遷移:bgコマンドとfgコマンド

ジョブの遷移に関する解説

 Linuxシステムにおいて、ジョブの管理は重要なスキルの一つです。特に、シェル上で複数のタスクを効率的に実行・管理するためには、ジョブの遷移に関する理解が不可欠です。ジョブはフォアグラウンド(前面)とバックグラウンド(背景)の2つのモードで実行されることがあり、状況に応じてこれらのモード間でジョブを遷移させることができます。

jobsコマンド

jobsコマンドは現在シェルで管理されているジョブのリストを表示します。表示される情報には、ジョブの状態(実行中、停止中、終了)とジョブ番号が含まれます。

状態説明
Running(実行中)ジョブが実行中です。
Stopped(停止中)ジョブが一時停止されています。
Terminated(終了)ジョブが終了しました(一度だけ表示されます)。
jobコマンドで表示される情報

ジョブの遷移

 ジョブはフォアグラウンド(前面)またはバックグラウンド(背景)で実行させることができます。以下にその遷移方法をまとめます。

操作説明
フォアグラウンド実行コマンドをそのまま実行すると、ジョブはフォアグラウンドで実行されます。
バックグラウンド実行コマンドの末尾に「&」を付けると、ジョブはバックグラウンドで実行されます。
フォアグラウンド → 停止「Ctrl」+「Z」キーを押すと、フォアグラウンドジョブが停止します。
停止 → バックグラウンドbgコマンドを実行すると、停止中のジョブがバックグラウンドで再開されます。
バックグラウンド → フォアグラウンドfgコマンドを実行すると、バックグラウンドジョブがフォアグラウンドで再開されます。
ジョブの終了フォアグラウンドジョブは「Ctrl」+「C」キー、バックグラウンドジョブや停止中のジョブはkillコマンドで終了します。
ジョブの遷移操作

bgコマンド

bgコマンドは停止中のジョブをバックグラウンドで実行するためのコマンドです。

【構文】
bg ジョブ番号

bg ジョブ番号

fgコマンド

fgコマンドはバックグラウンドジョブをフォアグラウンドに戻すためのコマンドです。

【構文】
fg ジョブ番号

fg ジョブ番号

ジョブの状態遷移の例

1.フォアグラウンド実行

・「sleep 1000」コマンドを実行します。

フォアグラウンドでsleepコマンドを実行します。

user01@ubuntu-vm:~$ sleep 1000

2.フォアグラウンドジョブを停止

  • 「Ctrl」+「Z」キーを押します。

フォアグラウンドで実行されているsleepジョブを停止します。

^Z  # Ctrl」+「Z」キーを押す
[1]+  停止                  sleep 1000

3.停止中のジョブをバックグラウンドで再開

・「bg 1」コマンドを実行します。

 停止中のsleepジョブをバックグラウンドで再開します。bgコマンドにジョブ番号を指定します。

user01@ubuntu-vm:~$ bg 1
[1]+ sleep 1000 &

4.バックグラウンドジョブをフォアグラウンドに戻す。

・「fg 1」コマンドを実行します。

 fgコマンドにジョブ番号を指定して、バックグラウンドで実行されているsleepジョブをフォアグラウンドに戻します。

user01@ubuntu-vm:~$ fg 1
sleep 1000

5.フォアグラウンドジョブを停止

  • 「Ctrl」+「Z」キーを押します。

フォアグラウンドで実行されているsleepジョブを停止します。

^Z  # Ctrl」+「Z」キーを押す
[1]+  停止                  sleep 1000

6.停止中のジョブを終了

・「kill %1」コマンドを実行します。

 killコマンドにジョブ番号を指定して、バックグラウンドで実行されているsleepジョブを終了させます。

user01@ubuntu-vm:~$ kill %1

[1]+  停止                  sleep 1000

まとめ

  • jobsコマンドはジョブの状態を確認するために使用します。
  • bgコマンドとfgコマンドを使用して、ジョブをバックグラウンドやフォアグラウンドに切り替えることができます。
  • フォアグラウンドジョブを終了するには「Ctrl」+「C」キー、バックグラウンドジョブや停止中のジョブを終了するにはkillコマンドを使用します。

このように、シェルでジョブを管理することで、効率的に複数のタスクを処理することができます。