目次

jobs

機能

jobsコマンドはジョブ制御機能を持つシェルの内部コマンドで、パックグラウンドで実行されているジョブの
一覧を表示します。jobsコマンドを実行すると、ジョブ番号、ジョブステータス、実行されている
ジョブの内容が表示されます。
オプション-lを指定すると、ジョブ番号とともにプロセスIDも表示されます。
(シェルによってはデフォルトでプロセスIDも表示されます。)

プロセスIDとジョブ番号の違い

プロセスIDは、そのUNIXが起動してから実行されたすべてのプロセスに順番にふられます。
ジョブ番号は、ユーザがそのシェル上で実行したバックグラウンドジョブに対して順番にふられます。
ジョブ番号は、fgコマンドでバックグラウンドジョブをフォアグランドで実行したり、killコマンドで
ジョブを強制終了するときに、対象となるジョブを指定する為に使われます。

構文

jobs [オプション]

オプション

-lプロセスIDも表示する。(sh(Solaris),bash,csh,tcsh)
-n前回通知されてからステータスが変わったジョブのみ表示する。(bash)
-pプロセスIDのみを表示する(sh(Solaris),bash)

コマンド例

 > jobs
 [1]   + Suspended                  man csh                   実行されているジョブは2つ
 [2]   - Running                    find / -name hoge -print
 > kill %2                          2番目のジョブを強制終了する。
 > jobs
 [1]   + Suspended                  man csh
 
 > jobs -l                          ジョブのプロセスIDを表示する。
 [1]   + 7709 Suspended             man csh
 >

ジョブとプロセス

UNIXにおけるプロセスは、実行されるプログラムやコマンド、ひとつひとつをOSが管理する単位です。
これに対して、ジョブはコマンドラインからユーザがコマンドなどを実行する処理の単位で、ユーザにとって意味のある
ひとまとまりの処理単位になります。
UNIXでは複数のコマンドを順番に連続して実行したり、パイプでつないで実行できます。
コマンドラインからコマンドを一度実行しても、異なるコマンドは別々のプロセスとして実行します。
つまり、1ジョブ = 1プロセス とは限らず、複数のプロセスが一つのジョブとなることもあります。