Linuxでプログラムをバックグラウンド実行したあと、「今どんなジョブが動いているんだろう?」と思ったことはありませんか?
そんなときに便利なのがjobsコマンドです。
jobsコマンドを使うと、現在のシェルで実行中・停止中のバックグラウンドジョブを一覧表示できます。
nohup、bg、fgなどと組み合わせて利用する機会も多く、Linuxを扱ううえで覚えておきたい基本コマンドの一つです。
この記事では、jobsコマンドの基本的な使い方から、ジョブ番号の見方、fg・bgとの違いまで初心者向けに分かりやすく解説します。
jobsコマンドとは
jobsコマンドは、現在のシェルで管理しているジョブ一覧を表示するコマンドです。
プロセス全体を表示するpsコマンドとは異なり、現在のシェルから起動したジョブだけが表示されます。
jobsコマンドの基本構文
jobs [オプション]
最も基本的な使い方は次のとおりです。
jobs
実行中または停止中のジョブが一覧表示されます。
jobsコマンドの表示例
$ jobs
[1]- Running python app.py &
[2]+ Stopped vim sample.txt
ジョブ番号・状態・実行コマンドが表示されます。
ジョブ番号の見方
| 表示 | 意味 |
|---|---|
| [1] | ジョブ番号 |
| Running | 実行中 |
| Stopped | 停止中 |
| + | 現在のジョブ |
| – | 次に参照されるジョブ |
バックグラウンド実行したジョブを確認する
例えば次のようにバックグラウンド実行します。
sleep 300 &
続いてjobsコマンドを実行します。
jobs
実行中のジョブが表示されれば成功です。
実行中ジョブだけ表示する
jobs -r
Running状態のジョブだけ確認できます。
停止中ジョブだけ表示する
jobs -s
Stopped状態だけ表示されます。
PIDも確認する
jobs -l
ジョブ番号だけでなくPIDも表示されるため、killコマンドと組み合わせる際に便利です。
ジョブをフォアグラウンドへ戻す
fg %1
ジョブ番号1を現在のターミナルへ戻します。
停止したジョブを再開する
bg %1
停止中のジョブをバックグラウンドで再開できます。
ジョブを終了する方法
ジョブを終了する場合は、ジョブ番号またはPIDを指定してkillコマンドを利用します。
kill %1
または、PIDが分かっている場合は次のように指定します。
kill 2458
通常はSIGTERMで終了し、必要な場合のみSIGKILLを利用しましょう。
jobsとpsの違い
| コマンド | 確認対象 |
|---|---|
jobs |
現在のシェルが管理しているジョブ |
ps |
システム全体のプロセス |
SSHで新しく接続し直した場合、以前のシェルで実行したジョブはjobsでは表示されません。
そのような場合はpsコマンドやpgrepコマンドで確認します。
jobsとnohupの違い
jobsは現在のシェル内でジョブを確認・管理するためのコマンドです。
一方、nohupはログアウト後もプログラムを実行し続けるためのコマンドです。
| コマンド | 用途 |
|---|---|
jobs |
ジョブの確認・管理 |
nohup |
ログアウト後も処理を継続する |
SSH接続を切断しても処理を継続したい場合は、nohupを利用しましょう。
jobsとfg・bgの関係
jobsコマンドは、fg・bgコマンドと組み合わせて使われることが多くあります。
| コマンド | 役割 |
|---|---|
jobs |
ジョブ一覧を表示する |
fg |
フォアグラウンドへ戻す |
bg |
バックグラウンドで再開する |
ジョブ番号を確認してからfgやbgを実行する流れを覚えておくと便利です。
シェルスクリプトで利用する例
複数の処理をバックグラウンドで実行したあと、ジョブ一覧を確認できます。
sleep 60 &
sleep 120 &
jobs
テストや検証環境でもよく利用される操作です。
よくあるエラー・注意点
ジョブが表示されない
現在のシェルで起動したジョブが存在しない可能性があります。
また、SSHで再接続した場合は以前のジョブは表示されません。
ジョブ番号が見つからない
対象ジョブが既に終了しているか、別のシェルで起動されています。
必要に応じてpsコマンドで確認してください。
jobsでPIDが分からない
PIDも確認したい場合は、jobs -lを利用しましょう。
jobs -l
PIDが表示されるため、killコマンドへそのまま指定できます。
ログアウトするとジョブが消えた
jobsは現在のシェルで管理しているジョブだけを表示します。
ログアウト後も処理を継続したい場合は、nohupやscreen、tmuxを利用してください。
よくある質問
jobsコマンドはシステム全体のプロセスを表示しますか?
いいえ。現在のシェルで管理しているジョブのみ表示します。
jobsで表示されたジョブを終了できますか?
はい。kill %ジョブ番号で終了できます。
jobsとpsはどちらを使えばよいですか?
現在のシェル内のジョブを確認するならjobs、システム全体のプロセスを確認するならpsを利用します。
SSHで再接続したらjobsが空になりました
正常な動作です。
jobsはシェル単位で管理されるため、新しいセッションでは以前のジョブは表示されません。
バックグラウンドジョブを再開するには?
停止中であれば、bg %ジョブ番号でバックグラウンド実行を再開できます。
まとめ
jobsコマンドは、Linuxで現在のシェルが管理しているバックグラウンドジョブを確認・管理するための基本コマンドです。
特に次のコマンドは覚えておくと便利です。
| コマンド | 用途 |
|---|---|
jobs |
ジョブ一覧を表示する |
jobs -l |
PIDも表示する |
jobs -r |
実行中ジョブのみ表示する |
jobs -s |
停止中ジョブのみ表示する |
fg %1 |
フォアグラウンドへ戻す |
bg %1 |
バックグラウンドで再開する |
kill %1 |
ジョブを終了する |
バックグラウンド処理を扱う場面では、「jobsで確認 → fg・bgで操作 → 必要に応じてkillで終了」という流れを覚えておくと、Linuxでの作業がよりスムーズになります。




コメント