bgコマンドとは?Linuxで停止中のジョブをバックグラウンドで再開する方法

Linux

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では、ジョブ管理は次のような流れで利用することが一般的です。

  1. プログラムを実行する
  2. Ctrl+Zで一時停止する
  3. bgでバックグラウンド実行へ切り替える
  4. jobsで状態を確認する
  5. 必要になったら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で終了」という流れを覚えておくと、作業効率が大きく向上します。

コメント

タイトルとURLをコピーしました