Linux では、完了までに時間がかかるコマンドに遭遇することがよくあります。待機してターミナルが使用不能になる代わりに、Linux ジョブ制御を使用してこれらのタスクを管理できます。この強力な機能により、単一のシェルセッション内で複数のバックグラウンドプロセスを実行および管理でき、ワークフローが大幅に向上します。
コマンドをバックグラウンドで実行する
プロセスをバックグラウンドで直接開始するには、コマンドの末尾にアンパサンド(&)を付けるだけです。これにより、コマンドの実行中に作業を続行できるよう、すぐにシェルプロンプトが返されます。
sleep 1000 &
sleep 1001 &
sleep 1002 &
バックグラウンドジョブのリスト表示
jobsコマンドを使用して、バックグラウンドで実行されているすべてのジョブを表示できます。
$ jobs
[1] Running sleep 1000 &
[2]- Running sleep 1001 &
[3]+ Running sleep 1002 &
出力には、最初の列にジョブ ID、そのステータス、および元のコマンドが表示されます。+記号は最も新しく開始されたバックグラウンドジョブを示し、-記号は 2 番目に新しいジョブを示します。
アクティブなプロセスの管理
すでにフォアグラウンドで実行中のコマンドがあり、ターミナルを解放する必要があると判断した場合はどうしますか?停止する必要はありません。まず、Ctrl-Zを押して実行中のプロセスを一時停止します。次に、bgコマンドを使用して、一時停止したジョブをバックグラウンドに送ります。
pete@icebox ~ $ sleep 1003
^Z
[4]+ Stopped sleep 1003
pete@icebox ~ $ bg
[4]+ sleep 1003 &
これで、sleep 1003プロセスがバックグラウンドジョブとして実行されており、jobsコマンドで確認できます。
ジョブをフォアグラウンドに持ってくる
バックグラウンドプロセスをフォアグラウンドに戻すには、fgコマンドを使用します。ジョブ ID を指定して特定のジョブを指定できます(例:fg %1)。引数なしでfgコマンドを実行すると、最も新しいバックグラウンドジョブ(+でマークされているもの)がフォアグラウンドに表示されます。
fg %1
バックグラウンドジョブの終了
バックグラウンドプロセスを停止する必要がある場合は、killコマンドを使用できます。fgコマンドと同様に、パーセント記号(%)をプレフィックスとして付けてジョブを参照します。これは Linux ジョブ制御の重要な機能です。
kill %1
これらのコマンドを習得することは、シェルで効率的にマルチタスクを実行したい初心者 Linux ユーザーにとって不可欠です。