Linuxのfgコマンド徹底解説!バックグラウンドジョブを前面に戻す方法
生徒
「先生、Linuxで実行中のプログラムを一旦止めて、あとでまた操作したいときってどうするんですか?」
先生
「それはLinuxのジョブ管理を使う方法があります。プログラムをバックグラウンドで実行したり、fgコマンドで前面に戻したりできます。」
生徒
「バックグラウンドジョブって何ですか?」
先生
「バックグラウンドジョブとは、ターミナルを占有せずに実行されているプログラムのことです。Linuxでは&を使ってコマンドをバックグラウンドで起動できます。」
生徒
「なるほど、でも途中でそのプログラムを操作したくなったら?」
先生
「そんなときに使うのがfgコマンドです。バックグラウンドジョブを前面に戻して、再び操作できるようになります。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. fgコマンドとは?
fgコマンドは、Linuxシェル(bashやzshなど)で使用できるバックグラウンドジョブを前面に戻すコマンドです。読み方はfg(エフジー)で、ターミナルで停止しているジョブやバックグラウンドで動作しているジョブを簡単に操作できるようになります。
例えば、長時間実行するプログラムを一時停止させておき、後で操作を再開したいときに便利です。Linuxのジョブ管理やターミナル操作の基本的な知識として覚えておくと役立ちます。
2. バックグラウンドジョブの作り方
Linuxでジョブをバックグラウンドで実行するには、コマンドの末尾に&をつけます。これでターミナルを占有せずにプログラムが実行されます。
sleep 60 &
[1] 12345
上の例ではsleep 60というコマンドが60秒間実行されますが、&をつけることでバックグラウンドで動作します。[1] 12345はジョブ番号とプロセスIDを示しています。
3. ジョブの一覧を確認する
バックグラウンドジョブを確認するには、jobsコマンドを使います。これで現在ターミナルで管理されているジョブを一覧表示できます。
jobs
[1]+ Running sleep 60 &
この例では、ジョブ番号1でsleep 60がバックグラウンドで実行中であることがわかります。ジョブ番号はfgコマンドで指定する際に必要です。
4. fgコマンドでバックグラウンドジョブを前面に戻す
バックグラウンドジョブを再び操作したい場合は、fgコマンドを使います。基本的な使い方は以下の通りです。
fg %1
sleep 60
ここで%1はジョブ番号です。ジョブ番号を指定せずにfgだけでも、直近のバックグラウンドジョブが前面に戻されます。
5. ジョブの一時停止と再開
実行中のプログラムを一時停止したい場合は、Ctrl + Zを押します。これでジョブがバックグラウンドに移動し、jobsコマンドで確認できます。
sleep 300
^Z
[1]+ Stopped sleep 300
停止したジョブは、fg %1で前面に戻すことができます。ジョブ番号を確認して正しく指定しましょう。
6. 複数ジョブの管理方法
複数のバックグラウンドジョブを同時に扱う場合も、ジョブ番号を使って操作できます。例えば、2つ目のジョブを前面に戻したい場合は次のようにします。
fg %2
Linuxではjobsコマンドでジョブ番号を確認し、fgで必要なジョブを前面に戻すことで柔軟に操作できます。
7. fgコマンドの便利な応用例
例えば、バックグラウンドで大きなファイルをダウンロードしながら作業している場合、fgを使えば進捗を確認できます。
wget http://example.com/largefile.zip &
[1] 23456
fg %1
こうすることで、ダウンロード中のプロセスをターミナルで直接確認できるため、状況に応じて操作が可能です。
8. Linux初心者向けの注意点
fgコマンドは簡単ですが、ジョブ番号を間違えると別のプロセスを操作してしまうことがあります。また、root権限で実行中のプロセスは一般ユーザーからfgできない場合があります。基本的には自分が起動したジョブに対して使うことが推奨されます。
9. Linuxでのジョブ管理まとめ
Linuxでバックグラウンドジョブを管理する基本的な流れは以下の通りです。
- コマンドの末尾に
&をつけてバックグラウンドで実行 jobsでジョブの一覧を確認Ctrl + Zで一時停止fg %ジョブ番号で前面に戻す
これらの操作を覚えると、Linuxのターミナルで複数のプログラムを効率的に管理できるようになります。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
本記事では、Linuxでバックグラウンドジョブを管理する方法と、fgコマンドを使ってジョブを前面に戻す手順について詳しく解説しました。Linuxのターミナル操作において、長時間実行するプログラムや複数ジョブを効率的に扱うことは非常に重要です。&を使ったバックグラウンド実行、jobsでのジョブ確認、Ctrl + Zによる一時停止、そしてfgによる前面への復帰という基本操作を組み合わせることで、ターミナルを柔軟かつ効率的に利用できます。
また、複数ジョブが同時に動作している場合もジョブ番号を活用することで特定のプロセスだけを操作でき、ダウンロードやデータ処理などのバックグラウンド作業を邪魔せずに進行状況を確認したり制御したりすることが可能です。Linux初心者でも、これらのコマンドを理解しておくことで日常的な作業の効率化が期待できます。
サンプル操作例
ここでは、バックグラウンドジョブの作成から前面復帰までの一連の流れを示します。
sleep 120 &
[1] 45678
jobs
[1]+ Running sleep 120 &
fg %1
sleep 120
この例では、sleep 120をバックグラウンドで実行し、jobsで確認後、fg %1で前面に戻しています。これにより、実行中のジョブを途中で操作できるようになります。
また、複数ジョブを扱う場合はジョブ番号を正確に指定することで混乱を避けられます。例えば、2つ目のジョブを操作したい場合はfg %2と指定します。Linuxのジョブ管理を使いこなすことで、複数作業を同時進行で効率的に処理することが可能です。
先生と生徒の振り返り会話
生徒
「先生、今日学んだfgコマンドって、実際にどう役立つんですか?」
先生
「例えば長時間実行する処理やダウンロード中の作業をバックグラウンドで動かしておき、必要なときに進捗確認や操作を再開できるんだ。ターミナルを占有せずに効率的に作業できるよ。」
生徒
「なるほど、ジョブ番号が必要なのはなぜですか?」
先生
「複数のジョブが同時に動いているとき、どのジョブを操作するかを指定するためだね。fg %1やfg %2で明確に選べるんだ。」
生徒
「ジョブを一時停止したあとでも前面に戻せるのは便利ですね。」
先生
「その通り。Ctrl + Zで一時停止して、後からfgで再開できる。この一連の流れを覚えておくと、Linuxでの作業効率が格段に上がるんだ。」
生徒
「複数ジョブの管理も簡単そうですね。jobsで確認してから操作すれば安全に使えますね。」
先生
「その通り。ジョブ番号を確認する習慣をつけるだけで、初心者でも安全にfgを使えるようになるよ。」
生徒
「今日はLinuxのジョブ管理とfgコマンドの使い方がよくわかりました。」
先生
「よく理解できたね。これでバックグラウンドジョブを効率的に扱えるようになったはずだ。」