fg は、現在のシェルが管理しているジョブのうち指定したものをフォアグラウンドに切り替えるシェル組み込みコマンドです。Ctrl+Z で一時停止したプロセスや & で起動したバックグラウンドジョブを前面に戻すときに使います。
実務では jobs で確認 → fg %N で対象を再開、の流れが定番です。
構文(Syntax)
# POSIX / Bash / Zsh(シェル組み込み)
fg [JOBSPEC]
# よく使うジョブ指定子(JOBSPEC)の例
%1 # ジョブ番号 1
%+ # カレントジョブ(直近に操作したもの)
%- # 直前のカレントジョブ(次点)
%string # コマンド行が string で始まるジョブ
%?string # コマンド行に string を含むジョブ
JOBSPECを省略すると カレントジョブ(%+) が対象になります。- 停止中ジョブは
SIGCONTで再開され、端末を占有して前面で実行されます。
主なオプション一覧
fg自体に一般的なオプションはありません(Bash/Zshともに引数はジョブ指定子のみ)。
| オプション/引数 | 説明 | 使用例 |
|---|---|---|
| (なし) | カレントジョブを前面へ | fg |
JOBSPEC=%N | ジョブ番号 N を前面へ | fg %1 |
JOBSPEC=%+ / %- | 直近/次点のジョブを前面へ | fg %+ |
JOBSPEC=%string | コマンドが string で始まるジョブを特定 | fg %vim |
JOBSPEC=%?string | コマンドに string を含むジョブを特定 | fg %?python |
実行例
Ctrl+Z で停止 → bg で後ろへ → fg で前面へ
説明: エディタを一時停止し、後ろで走らせた後に前面へ戻します。
コマンド:
vim README.md
# (作業中に Ctrl+Z を押して停止)
bg # バックグラウンドで再開
fg # 前面へ戻す(省略時は %+ が対象)
複数ジョブのうち特定の番号を前面へ
説明: 2つの sleep を起動し、ジョブ番号で選んで前面にします。
コマンド:
sleep 100 & # [1]
sleep 200 & # [2]
jobs
fg %1 # ジョブ1を前面へ
文字列でジョブを特定して前面へ
説明: python を含むジョブを検索的に指定します。
コマンド:
python long_task.py &
make -j8 &
jobs
fg %?python
パイプラインの前段を停止してから復帰
説明: パイプ全体が1つのジョブです。前面に戻すと再び端末を占有します。
コマンド:
yes | pv -L 1m | gzip > out.gz
# Ctrl+Z で停止
bg # 裏で再開
fg # 再び前面へ(中断・再開の挙動確認)
エラー例:存在しないジョブを指定
説明: 既に終了したジョブ番号を指定するとエラーになります。
コマンド:
fg %9
出力例(例):
bash: fg: %9: no such job
関連コマンド
jobs: 現在のシェルが管理するジョブ一覧を表示。bg: 停止中ジョブをバックグラウンドで再開。kill: ジョブ/プロセスにシグナル送信(例:kill -STOP %1,kill -CONT %1)。disown(Bash/Zsh) : ジョブをシェルの管理から外す(ログアウト後も継続させたい場合など)。wait: 指定ジョブ/プロセスの終了を待つ。
備考
- シェル組み込み:
fgは外部コマンドではありません。現在のシェルに対してのみ効果があります(別端末・サブシェル・sudoシェルには影響しません)。 - ジョブ制御が必要: 対話的シェルでジョブ制御が有効であること(Bashなら
set -mが有効)。cronや非対話シェルでは通常使えません。 - 端末占有:
fgで前面にすると、そのジョブは端末(標準入力)を再び占有します。Ctrl+C(SIGINT)、Ctrl+Z(SIGTSTP)などの端末シグナルも前面ジョブが受けます。 - Bash/Zsh の指定子:
%+(カレント),%-(前のジョブ),%N,%string,%?stringなどのジョブ指定子が使えます。 - 移植性: 基本仕様は POSIX
fgに準拠しますが、ジョブ指定子の拡張や表示メッセージはシェルごとに差があります。
参考
- POSIX
fg仕様(The Open Group Base Specifications): https://pubs.opengroup.org/onlinepubs/9699919799/utilities/fg.html - GNU Bash リファレンス(Job Control Builtins /
fg): https://www.gnu.org/software/bash/manual/bash.html#Job-Control-Builtins - Zsh ドキュメント(Jobs & Signals /
fg): https://zsh.sourceforge.io/Doc/Release/Jobs-_0026-Signals.html

コメント