bg – 停止中のジョブをバックグラウンドで再開する

フォアグラウンド/バックグラウンド

bg は、Ctrl+Z などで停止(Stopped)したジョブをバックグラウンド実行として再開するシェル組み込みコマンドです。
実務では jobs で対象を確認し、bg %N で裏で走らせながら手元のシェル操作を継続します。

構文(Syntax)

# POSIX / Bash / Zsh(シェル組み込み)
bg [JOBSPEC...]
  • JOBSPEC 例: %1(ジョブ番号1), %+(カレント), %-(前のジョブ), %vim(先頭一致), %?python(部分一致)
  • 省略時は カレントジョブ(%+ を再開します。

主なオプション一覧

オプション説明使用例
(なし)停止中ジョブをBGで再開bg
JOBSPEC対象ジョブを明示して再開(複数可)bg %1 %2

bg 自体に汎用オプションはありません(シェルにより細部の挙動差はあり)。

実行例

基本:停止 → 裏で再開

説明: vim を一時停止して裏で再開します。
コマンド:

vim README.md
# (編集中に Ctrl+Z で停止)
jobs           # 状態確認(Stopped)
bg             # カレントジョブをバックグラウンドで再開

出力例(例):

[1]+ Stopped                 vim README.md
[1]+ vim README.md &

複数ジョブをまとめて再開

説明: 停止中のジョブ番号を指定して複数同時に再開します。
コマンド:

sleep 100 &; sleep 200 &      # バックグラウンド開始
kill -STOP %1 %2              # (デモ用)両方を停止
jobs -s
bg %1 %2

出力例(例):

[1]-  Stopped                 sleep 100
[2]+  Stopped                 sleep 200
[1]- sleep 100 &
[2]+ sleep 200 &

文字列で対象を選んで再開

説明: コマンド行に python を含むジョブを検索して再開します。
コマンド:

python long_task.py
# Ctrl+Z
bg %?python

パイプラインを停止してから裏で継続

説明: パイプ全体が1つのジョブです。
コマンド:

yes | pv -L 1m | gzip > out.gz
# Ctrl+Z で停止
bg
jobs

出力例(例):

[1]+ yes | pv -L 1m | gzip > out.gz &

エラー例:ジョブ制御が無効/該当ジョブなし

説明: 非対話シェルではジョブ制御がなく失敗、存在しない番号もエラーです。
コマンド:

bash -c 'bg'
bg %9

出力例(例):

bash: bg: job control not enabled
bash: bg: %9: no such job

関連コマンド

  • jobs : 現在のシェルが管理するジョブ一覧を表示。
  • fg : 指定ジョブをフォアグラウンドに戻す。
  • kill : ジョブ/プロセスへシグナル送信(kill -STOP %1, kill -CONT %1 など)。
  • disown(Bash/Zsh) : ジョブをシェルの管理から外す(ログアウト後も継続させたい場合)。
  • wait : 指定ジョブ/プロセスの終了を待つ。
  • nohup : ログアウト時の SIGHUP を無視して実行。

備考

  • シェル組み込み: bg は外部コマンドではなく、現在のシェルにだけ効果があります。別の端末・サブシェル・sudo で起動したシェルには影響しません。
  • ジョブ制御が必要: 端末を持つ対話シェルで有効(Bashなら通常有効)。スクリプトで使う場合は set -m(モニターモード)が必要になることがあります。
  • 信号とI/O: 停止中ジョブは SIGCONT で再開されます。バックグラウンドジョブが標準入力を読むSIGTTIN で再停止するため、必要に応じてリダイレクトしてください(例: cmd < /dev/null &)。
  • 終了・ログアウト時: バックグラウンドジョブはシェル終了時に SIGHUP を受けるのが一般的です。継続させたい場合は disown -hnohup を利用します。
  • 優先度/資源: bg は優先度(niceness)を変えません。負荷制御が必要なら nice/renice を併用します。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント