
ジョブとは?
シェルが管理している、「シェルを実行する作業単位」のことです。(イメージ的にはシェルの1行1行のことです。)
「ジョブ番号」はシェルによって割り当てられます。
ジョブについて理解していることによるメリット
- 一つのターミナルので片方はバックグラウンドで動かし複数のタスクを行うことができるので複数ターミナルを使う必要がなくなる。
- サーバーダウン等のトラブルシューティングに対応できるようになる。
プロセスとジョブの違いは?
プロセスは、プログラムの実行単位で、プロセスIDはカーネルによって管理されています。
また、ジョブは、複数のコマンドをまとめたものでプロセスの集まりになります。
ジョブのイメージ
ジョブを図にすると下記のようなイメージになります。
ジョブの種類
ジョブには、「フォアグラウンドジョブ」と「バックグラウンドジョブ」の2種類があります。
フォアグラウンドジョブ
普通に、ターミナルでコマンドを打つ場合は基本これです。シェルの画面内で実行することを指します。バックグラウンドジョブをフォアグラウンドに戻したい場合はfgコマンドを実行します。
現在実行中のコマンドが終了するまでは、次のコマンドを打つことはできません。
fgコマンド
バックグラウンドジョブをフォアグラウンドに戻して対話的にコマンドを操作できるようにします。
1 |
fg %ジョブID |
バックグラウンドジョブ
コマンドの最後に「&」を打つことで、バックグラウンドジョブとして動作させることができます。シェルの画面外で動作させるジョブのことを指します。もしくはCtrl + Zで停止しているジョブをbgコマンドで実行すればバックグラウンドジョブとして実行することが可能です。
ジョブが実行中でも、次のコマンドを実行することができます。
現在実行中のジョブを確認するには?
例えば、コマンドの最後に「&」を付けることでバックグラウンドでsleepコマンドを実行させましょう。
その際に、[]付で出力されている[1]がジョブ番号になります。
また、「jobs」コマンドを打つことで、現在実行中のjobを確認することができます。
ジョブを停止させるには?
「kill %ジョブ番号」と指定すると、下記のようにジョブ単位で停止させることもできます。
Ctrl + z
実行しているジョブを停止してバックグラウンドへ移す。
Ctrl+c
フォアグラウンドで実行しているジョブを停止する。
この記事へのコメントはありません。