Linux / コマンド / bg - 停止したシェルジョブをバックグラウンドで再開

bgはジョブ制御が有効なBashで、停止中のジョブをバックグラウンドで再開します。一般的な端末設定で、実行中のコマンドを Ctrl+Z で一時停止し、その後ターミナルを使い続けたいときに使用します。

bgは停止したジョブに実行継続のシグナルを送りますが、ターミナルの前面制御権は与えません。jobsのジョブ一覧 で番号を確認し、%1のように指定します。端末から入力を読む対話型プログラムは、バックグラウンドで再び停止する場合があります。ファイルやパイプからの入力がすべて禁止されるわけではありません。

基本的な文法

bg [%ジョブ番号]

インストールされている実装とオプションは、配布版によって異なる場合があります。help bgで現在のシステムの説明を確認してください。

使用例

停止したジョブの確認

フォアグラウンドでコマンドを実行中にCtrl+Zを押した後に状態を確認します。

jobs -s

特定のジョブをバックグラウンドで再開

例の%1は、実際のjobs出力の番号に置き換えてください。

bg %1

再開結果の確認

Running 状態かどうかを確認します。

jobs -l

停止したジョブをバックグラウンドで再開する

bg は現在のシェルの停止したジョブをバックグラウンドで再開します。例えば sleep 60 を実行中に Ctrl+Z で停止した後、ジョブ番号を確認します。

jobs
bg %1
jobs

例の状態変化:

[1]+  Stopped  sleep 60
[1]+  Running  sleep 60 &

%1 は PID ではなく現在のシェルのジョブ番号 1 を意味します。シェルのジョブ制御が無効な場合や指定したジョブが存在しなければ bg は失敗します。ジョブが終了すると jobs から消えることがあるので、状態を再確認してください。

主なオプションと形式

オプション・形式 説明
%N 現在のシェルのジョブ番号Nを指定します。
%+ 現在のジョブを指定します。
%- 前のジョブを指定します。
引数 省略 Bashが現在のジョブとして扱うジョブを使用します。

使用する際の注意点

Ctrl+Zで停止したジョブはまだ実行中ではありません。bgで再開しても、制御端末から入力を読もうとするジョブは再び停止する可能性があります。入力が必要なら fgでジョブを前面へ戻す 方法を使います。bgはシェルのジョブ制御機能であり、ほかの端末のジョブをPIDだけで取り込む機能ではありません。バックグラウンドへの再開はCPU優先度の変更や端末からの完全な切り離しとは別で、ログアウト後の継続を保証するものでもありません。

よくある質問

コマンドの末尾に&を付けるのとbgは同じですか?

&は最初からバックグラウンドで開始し、bgはすでに停止している現在のシェルのジョブをバックグラウンドで再開します。

公式ドキュメント

オプションの正確な動作や実装ごとの違いは、bgに関する公式ドキュメントで確認できます。