Linuxでバックグラウンド実行したジョブを、もう一度ターミナル上で操作したいと思ったことはありませんか?
そんなときに利用するのがfgコマンドです。
fgコマンドを使うと、バックグラウンドや停止中のジョブをフォアグラウンドへ戻し、そのまま操作を続けられます。
jobsコマンドやbgコマンドとセットで利用する機会が多く、Linuxのジョブ管理では基本となるコマンドです。
この記事では、fgコマンドの基本的な使い方から、ジョブ番号の指定方法、Ctrl+Zとの関係、bgとの違いまで初心者向けに分かりやすく解説します。
fgコマンドとは
fgは、バックグラウンドまたは停止中のジョブをフォアグラウンドへ戻すためのコマンドです。
フォアグラウンドへ戻すことで、再びキーボードから操作できるようになります。
fgコマンドの基本構文
fg [%ジョブ番号]
ジョブ番号を省略すると、現在のジョブ(+が付いているジョブ)が対象になります。
fg
ジョブ一覧を確認する
まずはjobsコマンドで現在のジョブを確認します。
jobs
実行例
[1]- Running python app.py &
[2]+ Stopped vim sample.txt
+が付いているジョブが現在のジョブです。
ジョブ番号を指定してフォアグラウンドへ戻す
ジョブ番号を指定する場合は、%に続けて番号を指定します。
fg %2
ジョブ番号2が現在のターミナルへ戻り、そのまま操作を続けられます。
ジョブ番号を省略する
現在のジョブだけを戻したい場合は、番号を省略できます。
fg
もっともよく使われる書き方です。
Ctrl+Zとの関係
フォアグラウンドで動作しているプログラムは、Ctrl+Zを押すと一時停止できます。
^Z
[1]+ Stopped vim sample.txt
停止後は、fgコマンドで再びフォアグラウンドへ戻せます。
fg %1
bgコマンドとの違い
| コマンド | 役割 |
|---|---|
fg |
フォアグラウンドへ戻す |
bg |
バックグラウンドで再開する |
ジョブを操作したい場合はfg、裏で処理を続けたい場合はbgを利用します。
実行中のジョブを切り替える
複数のジョブがある場合は、jobsコマンドで番号を確認してから対象のジョブを指定します。
jobs
fg %2
目的のジョブだけをフォアグラウンドへ戻せます。
停止中のエディタを再開する
例えばVimをCtrl+Zで停止した場合も、fgで簡単に作業へ戻れます。
vim sample.txt
# Ctrl+Z
fg
編集途中の状態を維持したまま作業を再開できます。
バックグラウンドジョブを操作しながら作業する
バックグラウンドで動作しているジョブを一時的に操作したい場合は、fgコマンドを利用します。
例えば、バックアップ処理を停止して内容を確認したり、エディタの編集作業へ戻ったりできます。
jobs
fg %1
フォアグラウンドへ戻したあとは、そのプログラムを通常どおり操作できます。
複数ジョブがある場合の使い方
複数のジョブを実行している場合は、ジョブ番号を指定して目的のジョブを選択します。
jobs
[1]- Running python app.py &
[2]+ Stopped vim sample.txt
[3] Running sleep 300 &
例えばVimを再開したい場合は、次のように指定します。
fg %2
ジョブ番号を指定することで、複数のジョブの中から目的のものだけを操作できます。
現在のジョブを素早く再開する
+が付いている現在のジョブは、番号を指定しなくても再開できます。
fg
ジョブ番号を覚えていなくても利用できるため、実際の運用では最もよく使われる書き方です。
Ctrl+Z・bg・fgの基本的な流れ
Linuxでは、ジョブ管理は次の流れで利用することがよくあります。
- プログラムを実行する
- Ctrl+Zで一時停止する
bgでバックグラウンド実行するjobsでジョブを確認するfgで再びフォアグラウンドへ戻す
この流れを覚えておくと、Linuxのジョブ管理がぐっと理解しやすくなります。
fgとkillの違い
| コマンド | 役割 |
|---|---|
fg |
ジョブをフォアグラウンドへ戻す |
kill |
ジョブ・プロセスを終了する |
fgはジョブを再開するコマンドであり、終了するコマンドではありません。
ジョブを終了したい場合はkillコマンドを利用してください。
fgとjobsの違い
| コマンド | 役割 |
|---|---|
jobs |
ジョブ一覧を表示する |
fg |
ジョブを操作可能な状態へ戻す |
まずjobsでジョブ番号を確認し、その後fgで対象ジョブを再開するという流れが一般的です。
SSH接続時の注意点
fgコマンドは、現在のシェルが管理しているジョブだけを操作できます。
SSHで一度切断して再接続すると、以前のシェルで管理していたジョブはfgでは操作できません。
ログアウト後も処理を継続したい場合は、nohupやscreen、tmuxを利用しましょう。
よくあるエラー・注意点
fg: no current job と表示される
現在のシェルにフォアグラウンドへ戻せるジョブが存在しません。
まずはjobsコマンドでジョブ一覧を確認してください。
jobs
ジョブ番号が見つからない
指定したジョブが終了しているか、現在のシェルで管理されていない可能性があります。
SSHで再接続したらfgできない
fgは現在のシェル内のジョブだけを管理します。
別セッションのジョブは操作できません。
ジョブを終了したい
終了する場合はfgではなくkillコマンドを利用します。
kill %1
よくある質問
fgコマンドは何をするコマンドですか?
バックグラウンドまたは停止中のジョブをフォアグラウンドへ戻し、再び操作できるようにするコマンドです。
ジョブ番号はどこで確認できますか?
jobsコマンドを実行すると確認できます。
fgとbgはどう違いますか?
fgはフォアグラウンドへ戻し、bgはバックグラウンドで再開します。
ジョブ番号を省略できますか?
はい。現在のジョブ(+が付いているジョブ)であれば、fgだけで再開できます。
SSHで再接続したあともfgできますか?
できません。
fgは現在のシェルが管理しているジョブだけを対象とします。
まとめ
fgコマンドは、Linuxでバックグラウンドや停止中のジョブをフォアグラウンドへ戻すための基本コマンドです。
特に次のコマンドは覚えておくと便利です。
| コマンド | 用途 |
|---|---|
jobs |
ジョブ一覧を表示する |
fg |
現在のジョブをフォアグラウンドへ戻す |
fg %2 |
ジョブ番号を指定して戻す |
bg %1 |
停止中ジョブをバックグラウンドで再開する |
kill %1 |
ジョブを終了する |
Linuxでジョブ管理を行う際は、「Ctrl+Zで停止 → bgでバックグラウンド実行 → jobsで確認 → fgで再開 → 必要ならkillで終了」という流れを覚えておくと、効率よく作業を進められるようになります。




コメント