ジョブ制御(bg、fg、jobs)
シェルセッション内でバックグラウンドとフォアグラウンドのプロセスを管理し、ジョブの一時停止、再開、一覧表示を行う方法を身につけます。
「ジョブ制御(bg、fg、jobs)」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
ジョブ制御とは
ジョブ制御へようこそ。このLinuxシェルの強力な機能を使うと、ターミナルを閉じたり新しく開いたりせずに、実行中のプログラムを管理できます。
コマンドラインでマルチタスクを行うようなものです。タスクを一時停止したり、バックグラウンドに移動したり、フォアグラウンドに戻したりできます。
フォアグラウンドとバックグラウンド
コマンドを実行すると、通常はフォアグラウンドで実行されます。これは、コマンドがターミナルを占有し、処理が完了するまで新しいコマンドを入力できないことを意味します。
一方、バックグラウンドプロセスは独立して実行されます。ターミナルが解放されるため、処理の実行中も別の作業を続けられます。
プロセスを一時停止する(Ctrl+Z)
現在実行中のフォアグラウンドプロセスを一時停止するには、キーボードショートカットのCtrl+Zを使用します。これによりSIGTSTPシグナルが送信され、プロセスが一時停止します。
プロセスが終了するわけではありません。「停止」状態のジョブになり、次に何をするか指示されるまで待機します。
ジョブを確認する(jobs)
プロセスを一時停止した後(またはバックグラウンドに移行した後)は、jobsコマンドを使用して、現在のシェルセッションでアクティブなすべてのジョブの一覧を確認できます。
各ジョブには固有のジョブ番号([1]、[2]など)と、状態(Stopped、Runningなど)が割り当てられます。
sleep 50 &
sleep 60 &
jobsフォアグラウンドに戻す(fg)
停止中またはバックグラウンドに移行したジョブがある場合は、ジョブ番号(例:%1)を指定してfgコマンドを使用すると、ジョブをフォアグラウンドに戻せます。
これにより、そのジョブが再びターミナルのアクティブなプロセスになります。
sleep 100 &
jobs
# Now, let's bring it to foreground
fg %1バックグラウンドに移行する(bg)
停止中のジョブを再開してバックグラウンドに移行するには、ジョブ番号を指定してbgコマンドを使用します。
プロセスはターミナルを占有せずに実行を続けるため、すぐにプロンプトが戻ります。
sleep 200
# Press Ctrl+Z to stop it
# Then type:
bg %1
jobsバックグラウンドで実行する( & )
必ずフォアグラウンドでプロセスを開始してから一時停止する必要はありません。コマンドの末尾にアンパサンド(&)を付けると、コマンドを直接バックグラウンドで起動できます。
これは、対話操作が不要な長時間実行タスクに便利です。
echo "Starting long task..." &
sleep 300 &
jobsジョブ番号とPID
jobsを使用すると、[1]や[2]のようなジョブ番号が表示されます。これらはシェルセッションごとに固有の番号です。
実行中の各プロセスには、固有のプロセスID(PID)も割り当てられます。これはシステム全体で使われる番号です。PIDはjobs -lまたはpsで確認できます。
sleep 100 &
jobs -lジョブを停止する(kill)
バックグラウンドまたは停止中のジョブを終了するには、killコマンドを使用します。ジョブ番号(例:kill %1)またはPID(例:kill 12345)を指定できます。
killはプロセスにシグナルを送信します。デフォルトではSIGTERM(正常終了)が送信されます。強制終了するには、kill -9 %job_numberまたはkill -9 PIDを使用します。
sleep 500 &
jobs
# Assuming sleep is job 1:
kill %1
jobsジョブ制御クイズ
長時間実行されるコマンド(例:find / -name *.txt)を開始しましたが、別のコマンドを入力するためにターミナルを使える状態に戻したいとします。findコマンドを一時停止し、実行を続けられるようバックグラウンドに移行してから、バックグラウンドジョブであることを確認するには、どのような手順が正しいでしょうか。
振り返り:ジョブ制御
ジョブ制御をマスターしました!
Ctrl+Zはフォアグラウンドプロセスを一時停止します。jobsはアクティブなすべてのジョブを一覧表示します。fg %NはジョブNをフォアグラウンドに戻します。bg %Nは停止中のジョブNをバックグラウンドに移行します。&を末尾に付けると、コマンドを直接バックグラウンドで実行します。kill %Nまたはkill PIDはジョブを終了します。
これにより、1つのターミナルセッション内で複数のタスクを効率的に管理できます。
AI チューターと学ぶ DevOps Bootcamp — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 142
- レッスン
- 568
よくある質問
「ジョブ制御(bg、fg、jobs)」レッスンは無料ですか?
はい。「ジョブ制御(bg、fg、jobs)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「ジョブ制御(bg、fg、jobs)」で何を学びますか?
シェルセッション内でバックグラウンドとフォアグラウンドのプロセスを管理し、ジョブの一時停止、再開、一覧表示を行う方法を身につけます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「ジョブ制御(bg、fg、jobs)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ジョブ制御(bg、fg、jobs)
- シェル展開とグロブ
- エイリアスとカスタムプロンプト
- シェル関数と再利用可能なスニペット