このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:ジョブをバックグラウンドで実行するbgコマンドとフォアグラウンドで実行するfgコマンド

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

fgコマンド
fgコマンドは、停止中またはバックグラウンドで実行中のジョブをフォアグラウンド(前面)で再開するためのコマンドです。フォアグラウンドで実行されるジョブは、ユーザーの入力を受け付けることができ、コマンドの実行状況を直接確認できます。
【書式】fg [%ジョブ番号]
%ジョブ番号:フォアグラウンドに戻したいジョブの番号を指定します。- ジョブ番号を指定しない場合、カレントジョブ(
+が付いたジョブ)が対象となります。
主なオプション
| オプション | 説明 |
|---|---|
%ジョブ番号 | フォアグラウンドにするジョブの番号を指定する |
使用例
例:停止中のジョブをフォアグラウンドで再開
1.長時間実行するコマンドを開始し、Ctrl + Zで一時停止
user01@ubuntu:~$ sleep 40
^Z
[1]+ 停止 sleep 402.fgコマンドで再開
user01@ubuntu:~$ fg %1
sleep 40sleep 100がフォアグラウンドで再開され、コマンドが終了するまでシェルの操作ができなくなります。
bgコマンド
bgコマンドは、停止中のジョブをバックグラウンドで再開するためのコマンドです。バックグラウンドで実行されるジョブは、ユーザーの入力を必要とせず、シェルで他のコマンドを実行しながら並行して動作します。
【書式】bg [%ジョブ番号]
%ジョブ番号:バックグラウンドで再開したいジョブの番号を指定します。- ジョブ番号を指定しない場合、カレントジョブ(
+が付いたジョブ)が対象となります。
主なオプション
| オプション | 説明 |
|---|---|
%ジョブ番号 | バックグラウンドにするジョブの番号を指定する |
使用例
例:停止中のジョブをバックグラウンドで再開
1.長時間実行するコマンドを開始し、Ctrl + Zで一時停止
user01@ubuntu:~$ sleep 40
^Z
[1]+ 停止 sleep 402.bgコマンドでバックグラウンドで再開
user01@ubuntu:~$ bg %1
[1]+ sleep 40 &sleep 100がバックグラウンドで再開され、シェルを使って他のコマンドを実行できます。
bgコマンドとfgコマンドを使った操作例
シナリオ:長時間実行するプログラムをバックグラウンドで実行し、必要なときにフォアグラウンドで制御する
ステップ1:プログラムの開始
user01@ubuntu:~$ tail -f /var/log/syslogtail -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/syslogCtrl + 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/syslogfgコマンドでジョブをフォアグラウンドに戻す
- これで
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コマンドを使用し、ジョブ番号を把握して適切にfgやbgコマンドを使い分けましょう。
これらのコマンドを理解し活用することで、Linux環境での作業効率を大幅に向上させることができます。日々の業務でぜひ活用してみてください。
