Linux / コマンド / jobs - 現在のシェルのジョブ一覧を確認
jobsは、現在Bashシェルが管理しているバックグラウンドジョブと停止中のジョブを表示します。表示対象を条件で選ぶ psのプロセス一覧 とは範囲が異なります。
ジョブ番号は一覧で [1] のように表示され、操作の対象を指定するときは %1 のように書きます。プロセス識別番号(PID)とは別の番号です。1つのジョブはパイプラインなど複数のプロセスで構成される場合があります。停止中のジョブを再開する操作は bgによるバックグラウンド再開 や fgによるフォアグラウンドへの移動 で行います。別のターミナルや別のシェルで開始したジョブは、現在のシェルのjobsリストには表示されません。
基本的な文法
jobs [オプション] [ジョブ指定]
インストールされている実装とオプションは、配布版によって異なる場合があります。help jobsで現在のシステムの説明を確認してください。
使用例
バックグラウンドジョブの開始
対話型Bashの書き込みを伴わない実習例です。末尾の & はコマンドをバックグラウンドで開始します。この120秒の例と後の60秒の例は独立して試し、実際のジョブ番号は一覧で確認します。
sleep 120 &
現在のシェルのジョブ確認
ジョブ番号、状態、元のコマンドを確認します。
jobs
PIDも併せて表示する
ジョブ番号と実際のPIDを照合します。
jobs -l
現在のシェルのジョブ番号を読む
jobsはシステム全体のプロセスではなく、現在使用中のシェルで開始されたバックグラウンド・一時停止中のジョブを表示します。
sleep 60 &
jobs -l
例の出力(PIDとジョブ番号は異なる場合があります):
[1]+ 12345 Running sleep 60 &
[1]はこのシェルのジョブ番号で、12345はプロセスPIDです。他のターミナルや新しいシェルでjobsを実行しても、このジョブは表示されません。+ は現在のジョブを示す印です。シェルを閉じた後の実行も必要なら、nohupの適用範囲、tmux、サービス管理などを用途に応じて検討します。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
-l |
ジョブの状態とともにPIDを表示します。 |
-p |
ジョブのプロセスグループの代表PIDのみを表示します。 |
-r |
実行中のジョブのみを表示します。 |
-s |
停止されたジョブのみを表示します。 |
使用する際の注意点
Bashの jobs はそのシェルのジョブテーブルを参照します。非対話型では通常ジョブ制御が無効で、bg・fg などが使えない場合がありますが、バックグラウンド処理の一覧が全く記録されないという意味ではありません。完了したジョブは通知後に一覧から外れます。実習用sleepを途中で終えるなら、まず対象を確認し、kill %1 の1を実際の実習ジョブ番号に置き換えて、そのシェルで実行してください。
よくある質問
jobsが空なのにpsではプロセスが見える理由は?
jobsは現在のシェルが起動して管理しているジョブのみを表示し、psはシステムプロセスリストを参照するためです。
公式ドキュメント
オプションの正確な動作と実装ごとの違いは、jobsに関する公式ドキュメントで確認できます。




