Linux – ジョブについて詳しく解説 (fg、bg コマンド)

目次

概要

本記事では、シェル環境でのジョブコントロールについて説明します。 ジョブコントロールを使用すると、ユーザーはプロセスをバックグラウンドやフォアグラウンドで効率的に管理でき、中断や再開、終了などの操作を行うことができます。

ジョブ (job)

Linux のジョブ (job) は、シェル上で起動し、管理される一連のプロセスのことを指します。 フォアグラウンド・バックグラウンドの実行や一時停止など、ジョブ制御コマンドを用いることで、複数のタスクを同時に扱うことができます。 ジョブにはフォアグラウンドジョブとバックグラウンドジョブが存在します。

  • フォアグラウンドジョブ (Foreground Job)

    • シェルの制御を持っており、ユーザーが直接操作できるジョブです。
    • 実行中のコマンドが終了するまで、シェルは次のコマンドを受け付けません。
    • コマンドの末尾になにもつけず実行した場合、フォアグラウンドジョブになります。
  • バックグラウンドジョブ (Background Job)

    • シェルの制御を持たず、ユーザーが別のコマンドを実行できるジョブです。
    • コマンドの末尾に & を付けて実行した場合、バックグラウンドジョブになります。
    command &

ジョブ管理の基本コマンド

以下のようなコマンドを使ってジョブの管理を行います。

ジョブの一覧を表示する

ジョブ一覧を表示するには、次のコマンドを実行します。
バックグラウンドジョブの実行例として、sleep コマンドを & 付きで起動しています。

# バックグラウンドジョブを起動すると、ジョブ番号とプロセス ID が表示される。
sleep 100 &
[1] 12345  # [ジョブ番号] プロセスID

# ジョブ一覧を表示する。
jobs
[1]+  実行中               sleep 100 &

フォアグラウンドジョブを中断する

フォアグラウンドで実行中のジョブは、Ctrl + Z で中断できます。

sleep 100  # フォアグラウンドで実行
# Ctrl + Z で中断する
[1]+  Stopped  sleep 100

バックグラウンドジョブを中断する

バックグラウンドで実行中のジョブは、kill -STOP %ジョブ番号 で中断できます。

sleep 100 &  # バックグラウンドで実行
kill -STOP %1 # バックグラウンドジョブを中断する
[1]+  Stopped  sleep 100

中断したジョブをバックグラウンドで再開する

ジョブを中断した後は、bg コマンドでバックグラウンドジョブに移行できます。

bg %ジョブ番号
sleep 100  # フォアグラウンドで実行
# Ctrl + Z で中断する
[1]+  Stopped  sleep 100
bg %1  # ジョブ番号 1 をバックグラウンドで再開
[1]+ sleep 100 &

中断したジョブをフォアグラウンドで再開する

ジョブを中断した後は、fg コマンドでフォアグラウンドジョブに移行できます。

fg %ジョブ番号
sleep 100 &  # バックグラウンドで実行
kill -STOP %1 # バックグラウンドジョブを中断する
[1]+  Stopped  sleep 100
fg %1  # ジョブ番号 1 をフォアグラウンドで再開
sleep 100

特定のジョブを終了する

ジョブを終了したい場合は、kill コマンドでジョブ番号を指定できます。

kill %ジョブ番号

コメント

コメントする

目次