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

Linuxコマンドの基本:ジョブをバックグラウンドで実行するbgコマンドとフォアグラウンドで実行するfgコマンド

ジョブをバックグラウンドで実行するbgコマンドとフォアグラウンドで実行するfgコマンド

 Linuxシステムでは、複数のプログラムやコマンドを同時に操作することがよくあります。作業を効率的に進めるためには、ジョブ制御を理解し、適切にコマンドをフォアグラウンドやバックグラウンドで実行することが重要です。ここでは、ジョブをバックグラウンドで実行するbgコマンドと、フォアグラウンドで実行するfgコマンドについて詳しく解説します。

fgコマンド

 fgコマンドは、停止中またはバックグラウンドで実行中のジョブをフォアグラウンド(前面)で再開するためのコマンドです。フォアグラウンドで実行されるジョブは、ユーザーの入力を受け付けることができ、コマンドの実行状況を直接確認できます。

【書式】
fg [%ジョブ番号]

  • %ジョブ番号:フォアグラウンドに戻したいジョブの番号を指定します。
  • ジョブ番号を指定しない場合、カレントジョブ(+が付いたジョブ)が対象となります。

主なオプション

オプション説明
%ジョブ番号フォアグラウンドにするジョブの番号を指定する
主なオプション

使用例

例:停止中のジョブをフォアグラウンドで再開

1.長時間実行するコマンドを開始し、Ctrl + Zで一時停止
user01@ubuntu:~$ sleep 40
^Z
[1]+  停止                  sleep 40
2.fgコマンドで再開
user01@ubuntu:~$ fg %1
sleep 40
  • sleep 100がフォアグラウンドで再開され、コマンドが終了するまでシェルの操作ができなくなります。

bgコマンド

 bgコマンドは、停止中のジョブをバックグラウンドで再開するためのコマンドです。バックグラウンドで実行されるジョブは、ユーザーの入力を必要とせず、シェルで他のコマンドを実行しながら並行して動作します。

【書式】
bg [%ジョブ番号]

  • %ジョブ番号:バックグラウンドで再開したいジョブの番号を指定します。
  • ジョブ番号を指定しない場合、カレントジョブ(+が付いたジョブ)が対象となります。

主なオプション

オプション説明
%ジョブ番号バックグラウンドにするジョブの番号を指定する
主なオプション

使用例

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

1.長時間実行するコマンドを開始し、Ctrl + Zで一時停止
user01@ubuntu:~$ sleep 40
^Z
[1]+  停止                  sleep 40
2.bgコマンドでバックグラウンドで再開
user01@ubuntu:~$ bg %1
[1]+ sleep 40 &
  • sleep 100がバックグラウンドで再開され、シェルを使って他のコマンドを実行できます。

bgコマンドとfgコマンドを使った操作例

シナリオ:長時間実行するプログラムをバックグラウンドで実行し、必要なときにフォアグラウンドで制御する

ステップ1:プログラムの開始

user01@ubuntu:~$ tail -f /var/log/syslog
  • tail -fコマンドでログファイルをリアルタイムに監視します。
2024-10-24T01:39:32.890427+09:00 ubuntu gnome-shell[3146]: libinput error: event6
  - VirtualBox mouse integration: client bug: event processing lagging behind by 
21ms, your system is too slow
2024-10-24T01:39:33.030250+09:00 ubuntu dbus-daemon[2931]: [session uid=1000 pid=
2931] Successfully activated service 'org.gnome.Terminal'
2024-10-24T01:39:33.031387+09:00 ubuntu systemd[2900]: Started gnome-terminal-ser
ver.service - GNOME Terminal Server.

ステップ2:プログラムの一時停止

^Z
[1]+  停止                  tail -f /var/log/syslog
  • Ctrl + Zを押して一時停止

ステップ3:バックグラウンドで再開

user01@ubuntu:~$ bg %1
[1]+ tail -f /var/log/syslog &
  • bgコマンドでバックグラウンドで再開

※プロンプトを表示するにはEnterキーを押さなければ、ならない場合があります。

ステップ4:ジョブの確認

user01@ubuntu:~$ jobs
[1]+  実行中               tail -f /var/log/syslog &
  • jobsコマンドでジョブの状態を確認

※プロンプトを表示するにはEnterキーを押さなければ、ならない場合があります。

ステップ5:別のコマンドを実行

user01@ubuntu:~$ ls -l
合計 40
drwx------ 4 user01 user01 4096  9月 21 00:00 snap
drwxrwxr-x 2 user01 user01 4096 10月  4 00:50 work
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 ダウンロード
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 テンプレート
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 デスクトップ
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 ドキュメント
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 ビデオ
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 ピクチャ
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 ミュージック
drwxr-xr-x 2 user01 user01 4096  9月 14 22:50 公開
  • シェルで他の作業を行う

ステップ6:フォアグラウンドで再開

user01@ubuntu:~$ fg %1
tail -f /var/log/syslog
  • fgコマンドでジョブをフォアグラウンドに戻す
  • これでtail -fコマンドがフォアグラウンドに戻り、リアルタイムのログを直接確認できます。

ステップ7:プログラムの終了

^C
user01@ubuntu:~$ 
  • Ctrl + Cでプログラムを終了

操作の流れ

ステップコマンド/キー入力説明
プログラム開始$ tail -f /var/log/syslogログのリアルタイム監視を開始
一時停止Ctrl + Zプログラムを一時停止
バックグラウンド再開$ bg %1ジョブをバックグラウンドで再開
ジョブ確認$ jobs現在のジョブ一覧を表示
別の作業$ ls -lシェルで他のコマンドを実行
フォアグラウンド再開$ fg %1ジョブをフォアグラウンドで再開
プログラム終了Ctrl + Cプログラムを終了
操作の流れ

まとめ

  • fgコマンドは、停止中またはバックグラウンドで実行中のジョブをフォアグラウンドで再開します。ユーザーの入力が必要なジョブを操作するときに使用します。
  • bgコマンドは、停止中のジョブをバックグラウンドで再開します。長時間実行するコマンドをバックグラウンドで動作させ、シェルを開放したいときに便利です。
  • ジョブ制御を活用することで、複数の作業を効率的に並行して行うことができます。
  • ジョブの確認にはjobsコマンドを使用し、ジョブ番号を把握して適切にfgbgコマンドを使い分けましょう。

 これらのコマンドを理解し活用することで、Linux環境での作業効率を大幅に向上させることができます。日々の業務でぜひ活用してみてください。