[Linux] bgコマンドの使い方 – バックグラウンド動作への切り替え
bgコマンドは、停止中のジョブをバックグラウンドで再開するために使用されます。
通常、ジョブはCtrl+Zで一時停止されますが、その後、bgコマンドを使うことでバックグラウンドで実行を再開できます。
使い方は「bg [ジョブ番号]」の形式で、ジョブ番号を省略すると、直前に停止したジョブが対象となります。
ジョブ番号は jobs
コマンドで確認可能です。
バックグラウンドで動作するジョブは、シェルの操作を妨げません。
- bgコマンドの基本的な使い方
- fgコマンドとの違いと使い分け
- バックグラウンドジョブの管理方法
- 複数のジョブを同時に実行する方法
- 応用例を通じた実践的な活用法
bgコマンドとは
bgコマンドの概要
bg
コマンドは、LinuxやUnix系のシステムで使用されるコマンドで、現在のシェルセッション内で実行中のジョブをバックグラウンドで動作させるために使用されます。
これにより、ユーザーは他のコマンドを入力したり、別の作業を行ったりすることが可能になります。
バックグラウンドで動作しているジョブは、シェルのプロンプトに戻ることができ、他の作業を同時に行うことができます。
フォアグラウンドとバックグラウンドの違い
フォアグラウンド | バックグラウンド |
---|---|
ユーザーが直接操作するプロセス | ユーザーが操作しないプロセス |
シェルがプロセスの終了を待つ | シェルはプロセスの終了を待たない |
入力を受け付ける | 入力を受け付けない(通常は) |
例: sleep 10 | 例: sleep 10 & |
フォアグラウンドでは、プロセスが終了するまでシェルが待機しますが、バックグラウンドではプロセスが実行されている間もシェルは他のコマンドを受け付けます。
ジョブ制御の基本
ジョブ制御は、シェル内で複数のプロセスを管理するための機能です。
主なコマンドには以下があります。
コマンド | 説明 |
---|---|
jobs | 現在のジョブのリストを表示 |
fg | バックグラウンドジョブをフォアグラウンドに戻す |
bg | フォアグラウンドジョブをバックグラウンドに移動 |
kill | ジョブを終了させる |
これらのコマンドを使用することで、ユーザーはシェル内でのプロセスの状態を確認し、必要に応じて操作を行うことができます。
bgコマンドの基本的な使い方
ジョブの一時停止と再開
ジョブを一時停止するには、Ctrl + Z
を使用します。
これにより、現在実行中のプロセスが一時停止し、シェルに制御が戻ります。
その後、bg
コマンドを使用して、そのジョブをバックグラウンドで再開することができます。
# プロセスを一時停止
sleep 30
# Ctrl + Zを押す
# 一時停止したプロセスをバックグラウンドで再開
bg
[1]+ sleep 30 &
bgコマンドの基本構文
bg
コマンドの基本的な構文は以下の通りです。
bg [ジョブ番号]
ジョブ番号を指定しない場合、最後に一時停止したジョブがバックグラウンドで再開されます。
ジョブ番号を指定することで、特定のジョブをバックグラウンドで再開することができます。
ジョブ番号の指定方法
ジョブ番号は、jobs
コマンドを使用して確認できます。
jobs
コマンドを実行すると、現在のシェルセッションで管理されているジョブのリストが表示されます。
各ジョブには番号が付与されており、その番号を使ってbg
コマンドで特定のジョブを指定できます。
# 現在のジョブを表示
jobs
[1]+ Stopped sleep 30
[2]- Stopped sleep 60
この場合、ジョブ番号1
を指定してバックグラウンドで再開するには、次のようにします。
bg %1
jobsコマンドとの連携
jobs
コマンドは、現在のシェルセッションで実行中のジョブの状態を確認するために使用されます。
jobs
コマンドを実行すると、各ジョブの状態(実行中、停止中など)やジョブ番号が表示されます。
これにより、ユーザーはどのジョブをバックグラウンドで再開するかを判断できます。
# ジョブの状態を確認
jobs
[1]+ Running sleep 30 &
[2]- Stopped sleep 60
この情報をもとに、必要なジョブをbg
コマンドで再開することができます。
bgコマンドの実行例
単一ジョブのバックグラウンド化
単一のジョブをバックグラウンドで実行するには、コマンドの末尾に&
を付けて実行します。
これにより、そのジョブはバックグラウンドで動作し、シェルはすぐに次のコマンドを受け付けることができます。
# sleepコマンドをバックグラウンドで実行
sleep 30 &
[1] 12345
ここで、[1]
はジョブ番号、12345
はプロセスIDです。
複数ジョブのバックグラウンド化
複数のジョブをバックグラウンドで実行することも可能です。
各ジョブを&
で区切って実行します。
# 複数のsleepコマンドをバックグラウンドで実行
sleep 30 &
sleep 60 &
[1] 12346
[2] 12347
このように、複数のジョブが同時にバックグラウンドで実行されます。
jobs
コマンドを使って、実行中のジョブを確認できます。
特定のジョブをバックグラウンドで再開する方法
一時停止したジョブをバックグラウンドで再開するには、bg
コマンドを使用します。
まず、jobs
コマンドで現在のジョブを確認し、再開したいジョブの番号を指定します。
# 現在のジョブを表示
jobs
# 停止中のジョブをバックグラウンドで再開
bg %1
[1]+ sleep 30 &
このように、指定したジョブがバックグラウンドで再開され、シェルは他のコマンドを受け付けることができるようになります。
fgコマンドとの違い
fgコマンドの役割
fg
コマンドは、バックグラウンドで実行中のジョブをフォアグラウンドに戻すためのコマンドです。
これにより、ユーザーはそのジョブに対して直接入力を行ったり、進行状況を確認したりすることができます。
fg
コマンドを使用することで、バックグラウンドで動作しているプロセスを再び前面に持ってくることができます。
# バックグラウンドで実行中のジョブをフォアグラウンドに戻す
fg %1
fgとbgの使い分け
fg
とbg
は、ジョブの実行状態を制御するためのコマンドですが、それぞれの役割は異なります。
コマンド | 説明 |
---|---|
fg | バックグラウンドジョブをフォアグラウンドに戻す |
bg | フォアグラウンドジョブをバックグラウンドで再開する |
- fg: ユーザーが直接操作したい場合に使用します。
例えば、入力を必要とするプロセスや、進行状況を確認したい場合に適しています。
- bg: 他の作業を行いながら、プロセスをバックグラウンドで実行したい場合に使用します。
長時間実行されるプロセスなどに便利です。
fgとbgの組み合わせた操作例
fg
とbg
を組み合わせて使用することで、ジョブの管理がより柔軟になります。
例えば、あるジョブを一時停止し、バックグラウンドで再開した後、再度フォアグラウンドに戻すことができます。
# プロセスをバックグラウンドで実行
sleep 60 &
# プロセスを一時停止
# Ctrl + Zを押す
# 一時停止したプロセスをバックグラウンドで再開
bg
# バックグラウンドで実行中のプロセスをフォアグラウンドに戻す
fg
このように、bg
でバックグラウンドに移動させた後、必要に応じてfg
でフォアグラウンドに戻すことができます。
これにより、作業の流れに応じてプロセスを柔軟に管理することが可能です。
応用例
長時間実行するプロセスをバックグラウンドで動かす
長時間実行されるプロセス(例えば、データのバックアップや大規模なファイルの処理など)をバックグラウンドで動かすことで、シェルを他の作業に使用することができます。
&
を使ってプロセスをバックグラウンドで実行し、必要に応じてその進行状況を確認できます。
# 大きなファイルのバックアップをバックグラウンドで実行
cp -r /path/to/large_directory /path/to/backup_directory &
[1] 12348
このように、バックグラウンドで実行することで、他のコマンドを入力することが可能になります。
複数のジョブを並行して実行する
複数のジョブを同時にバックグラウンドで実行することで、効率的に作業を進めることができます。
各ジョブを&
で区切って実行することで、同時に複数のプロセスを管理できます。
# 複数のデータ処理をバックグラウンドで実行
python process_data1.py &
python process_data2.py &
python process_data3.py &
[1] 12349
[2] 12350
[3] 12351
このように、複数のジョブを同時に実行することで、全体の処理時間を短縮できます。
バックグラウンドジョブの管理と確認
バックグラウンドで実行中のジョブを管理するためには、jobs
コマンドを使用します。
このコマンドを実行することで、現在のシェルセッションで実行中のジョブの状態を確認できます。
ジョブの状態を把握することで、必要に応じてfg
やbg
コマンドを使ってジョブを操作できます。
# 現在のバックグラウンドジョブを確認
jobs
[1]+ Running cp -r /path/to/large_directory /path/to/backup_directory &
[2]- Running python process_data1.py &
[3]+ Running python process_data2.py &
この情報をもとに、特定のジョブをフォアグラウンドに戻したり、バックグラウンドで再開したりすることができます。
ジョブの管理を適切に行うことで、効率的に作業を進めることが可能です。
よくある質問
まとめ
この記事では、bg
コマンドの基本的な使い方や、フォアグラウンドとバックグラウンドの違い、ジョブ制御の基本について詳しく解説しました。
また、fg
コマンドとの違いや、実際の応用例を通じて、バックグラウンドでのプロセス管理の重要性を強調しました。
シェルを効率的に活用するために、これらのコマンドを使いこなすことが大切です。
今後は、実際の作業でこれらのコマンドを積極的に活用し、作業効率を向上させてみてください。