ジョブとは、1つ以上のコマンド(プロセス)が動いてひとまとまりの処理になっている場合の基本単位です。シェルが端末ごとに管理しています。

 シェル上で起動したコマンドは「フォアグラウンドジョブ」と「バックグラウンドジョブ」の2種類に大別されます。フォアグラウンドジョブは文字通り、ターミナルの“前面”で実行されます。終了するまでシェルは待ち状態になり、他のコマンドを実行できません。

 一方、バックグラウンドジョブとして実行した場合、シェルはすぐにプロンプトを表示するので、別のコマンドを実行できるようになります。「jobs」コマンドを実行すると、ジョブを識別するための「ジョブ番号」が各ジョブに割り振られ、現在どのようなジョブが実行中であるか、あるいは一時停止中であるかを把握できます。

 ジョブ番号はターミナルごとに、コマンドの実行順で割り当てられていきます。ターミナルのウィンドウを二つ開いて、それぞれで同じコマンドを起動すると、いずれもジョブ番号が1番のジョブとして扱われます。

 これに対して、システム全体でみた実行中の個々のプログラムの最小単位は「プロセス」と呼んでいます。個々のプロセスには「プロセスID」というシステム内で重複のない番号が割り当てられます。したがって、2つのコマンドをパイプで組み合わせて実行した場合、ジョブとしては1つと見なしますが、プロセスとしては2つ起動している格好になります。