Linuxを使っていて、作業中のプロセスを一時停止させたけれど、どうやって再開すればいいのかわからない…という経験はありませんか?
そんな時に便利なのが「fg」コマンドです。
このコマンドを使えば、バックグラウンドで停止していたジョブを簡単にフォアグラウンドに戻して再開することができます。
本記事では、fgコマンドの基本的な使い方から、ジョブ管理に役立つ関連コマンドとの組み合わせまで、初心者にもわかりやすく解説します。
ターミナル作業をより効率的に行うためにも、ぜひ覚えておきたいテクニックのひとつです。
fgとは、「foreground(フォアグラウンド)」の略で、現在停止中もしくはバックグラウンドで動作しているジョブを、フォアグラウンドに戻して再開するためのコマンドです。
フォアグラウンドとは、現在ユーザーが操作しているターミナル上で直接入力・出力が行われている状態を指します。
一方で、バックグラウンドで実行されているプロセスは、ターミナルを占有せずに裏で動作します。
たとえば、エディタやスクリプトをCtrl+Zで一時停止した後、fgを使えばその作業を再開できるのです。
以下に、fgの基本的な使い方を実際の操作例で見てみましょう。
$ vi test.txt
このように、vi
コマンドでファイルを開いている状態で、以下のようにCtrl + Z
を押すと、ジョブが一時停止します。
[1]+ 停止中 vi test.txt
$ fg
このコマンドを入力することで、停止中だったvi
がフォアグラウンドで再開されます。
複数のジョブを同時に停止・バックグラウンドにしている場合、fgコマンドに引数を指定することで特定のジョブを再開できます。
まず、jobs
コマンドで現在のジョブの状態を確認します。
$ jobs
[1]- 停止中 vi test.txt
[2]+ 停止中 nano memo.txt
たとえば、ジョブ番号2を再開したい場合は、以下のように指定します。
$ fg %2
「%」はジョブ番号を指定するための記号です。
この場合、nanoエディタがフォアグラウンドに戻って再開されます。
fgは単独でも便利ですが、以下のようなコマンドと一緒に使うと、さらに活用の幅が広がります。
現在のジョブの状態(実行中・停止中など)を一覧で確認できます。
$ jobs
停止中のジョブをバックグラウンドで実行再開します。ターミナルを占有せずにプロセスを進めたい場合に便利です。
$ bg %1
不要になったジョブを終了するためのコマンドです。
$ kill %1
fgと合わせて覚えておくことで、ジョブ管理の自由度が格段にアップします。
fgで再開したジョブは、他のコマンドを同じターミナルから実行できない状態になります。作業が終わるまで他の作業ができないため、用途に応じてバックグラウンド(bg)との使い分けが必要です。
fgは外部コマンドではなく、bashなどのシェルに組み込まれている内部コマンドです。そのため、manコマンドでは情報が出ず、代わりにhelp fg
やman bash
で調べる必要があります。
$ help fg
fgコマンドが期待通りに動作しない場合、以下のような原因が考えられます。
そのため、まずはjobs
コマンドでジョブの状態を確認することが重要です。
たとえば、長時間かかるスクリプトやプログラムを途中で一時停止し、後からフォアグラウンドに戻して進行状況を確認したいといったケースがあります。
$ ./long_script.sh
[Ctrl + Z]
$ jobs
[1]+ 停止中 ./long_script.sh
$ fg %1
また、すぐに他の作業に移りたい場合は、以下のようにbgでバックグラウンドに回しておき、必要に応じてfgで再度制御を戻すのも一つの手です。
$ bg %1
$ fg %1
fgコマンドは、一時停止したジョブを簡単にフォアグラウンドで再開できる、非常にシンプルで便利なツールです。
特に、複数のジョブを同時に扱う場面では、jobsコマンドやbgコマンドと組み合わせることで、ターミナル作業をスムーズに進められるようになります。
今回紹介した基本操作に加え、複数ジョブの管理や注意点なども理解しておけば、より自在にLinuxシェルを使いこなせるようになります。
ぜひ、自分の環境で実際に試して、fgコマンドの便利さを体感してみてください!