バックグラウンドジョブとジョブ制御
ターミナルを占有せずにコマンドを実行します。バックグラウンドジョブ、jobs/fg/bgによるジョブ制御、nohupでログアウト後もプロセスを維持する方法を学びます。
「バックグラウンドジョブとジョブ制御」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
バックグラウンドジョブを使う理由
実行に長い時間がかかるコマンドもあります。ターミナルを操作できない状態にする代わりに、コマンドをバックグラウンドで実行して、同じシェルで作業を続けられます。
バックグラウンドで開始する
コマンドの末尾に & を付けると、バックグラウンドで起動できます。シェルはジョブ番号と PID を表示した後、すぐにプロンプトを返します。
sleep 300 &
[1] 4821ジョブを一覧表示する
jobs コマンドは、現在のシェルにあるバックグラウンドジョブと停止中のジョブを、角括弧内のジョブ番号とともに一覧表示します。
jobs
[1]+ Running sleep 300 &ジョブを一時停止する
Ctrl+Z を押すと、フォアグラウンドのコマンドを一時停止できます。終了するのではなく停止し、プロンプトが戻ります。
^Z
[1]+ Stopped nano notes.txtバックグラウンドで再開する
bg は、最後に停止したジョブをバックグラウンドで再開します。作業中もそのジョブは実行を続けます。
bg
[1]+ nano notes.txt &フォアグラウンドに戻す
fg は、バックグラウンドまたは停止中のジョブをフォアグラウンドに戻します。特定のジョブを指定するには fg %n を使います。
fg %1 # bring job 1 to the foregroundジョブを参照する
fg、bg、kill などのコマンドでは、%n を使って番号でジョブを指定します。
kill %1 # terminate job number 1ジョブ番号と PID の違い
ジョブ番号はシェル内だけで使える便利な番号で、PID はシステム全体で使われます。自分のシェル内ではジョブ番号を使い、別のターミナルから kill などのシステムツールを使う場合は PID を使います。
nohup でログアウト後も実行する
通常、バックグラウンドジョブはログアウトすると終了します。nohup はコマンドをターミナルから切り離し、離れた後も実行を続けられるようにします。
nohup ./long_task.sh > out.log 2>&1 &ジョブを disown する
disown は実行中のジョブをシェルのジョブテーブルから削除します。そのため、シェルを閉じてもハングアップシグナルが送られません。
./task &
disown %1screen や tmux などのツール
長時間の実行やリモートセッションには、tmux や screen などのターミナルマルチプレクサが便利です。接続が切れた後もセッション全体を維持し、再接続できます。
クイックチェック
理解度を確認しましょう。
まとめ
ジョブ制御について学びました。& で起動し、jobs で一覧表示し、Ctrl+Z で一時停止し、bg/fg と %n で移動できます。また、nohup、disown、tmux/screen を使うと、ログアウト後もタスクを実行し続けられます。
よくある質問
「バックグラウンドジョブとジョブ制御」レッスンは無料ですか?
はい。「バックグラウンドジョブとジョブ制御」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「バックグラウンドジョブとジョブ制御」で何を学びますか?
ターミナルを占有せずにコマンドを実行します。バックグラウンドジョブ、jobs/fg/bgによるジョブ制御、nohupでログアウト後もプロセスを維持する方法を学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「バックグラウンドジョブとジョブ制御」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- プロセス管理(ps、top、kill)
- 入出力のリダイレクト(>、>>、<)
- コマンドのパイプ(|)
- バックグラウンドジョブとジョブ制御