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




コメント