Linuxのjobsコマンドとは?実行中ジョブ一覧を表示・管理する方法を初心者向けに徹底解説
生徒
「Linux(リナックス)でコマンドを実行している最中に、別の作業をしたくなったときはどうすればいいんですか?一度コマンドを終了させないとダメですか?」
先生
「そんなときは『ジョブ管理』という機能を使うと便利ですよ。実行中の処理を一時停止させたり、裏側(バックグラウンド)で動かしたりできるんです。」
生徒
「裏側で動かす?今何が動いているか分からなくなりそうですね。」
先生
「そこで登場するのがjobs(ジョブズ)コマンドです。これを使えば、現在自分が動かしている処理の一覧を一目で確認できます。初心者の方でもすぐに使いこなせるようになりますよ。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. jobsコマンドとは?
Linux(リナックス)におけるjobs(読み方:ジョブズ)コマンドは、現在のシェル(bashやzshなど)のセッションで実行されている「ジョブ」の状態を表示するためのコマンドです。
「ジョブ」とは、シェルから見た作業の単位のことです。Windows(ウィンドウズ)などのGUI(ジーユーアイ)環境で、ブラウザを開きながら文書作成ソフトを使うように、Linuxのターミナル(黒い画面)でも複数の作業を並行して行うことができます。これを管理するのがジョブ管理機能です。
特に長時間かかるバックアップ処理やプログラムのコンパイルなどを行っている最中に、その処理を止めることなく別の操作をしたい場合に、このコマンドが非常に役立ちます。
2. ジョブとプロセスの違いを知ろう
Linuxを学び始めると、「プロセス」という言葉もよく耳にするようになります。ジョブとプロセスは似ていますが、少しだけ意味が異なります。初心者の方が混乱しやすいポイントなので、ここで整理しておきましょう。
- プロセス(読み方:プロセス):OS(オーエス:オペレーティングシステム)全体から見た実行単位です。システム全体で何が動いているかを管理します。
- ジョブ(読み方:ジョブ):シェル(bashなど)から見た実行単位です。ユーザーがターミナルから入力した一つの命令や、パイプでつないだ一連の命令を指します。
例えば、psコマンドはシステム全体のプロセスを表示しますが、jobsコマンドは「今使っているこの画面(ターミナル)」から開始された作業だけを表示します。そのため、自分が行っている作業を把握するのにはjobsコマンドの方が適しています。
3. 基本的なjobsコマンドの使い方
まずは、最もシンプルな使い方を見てみましょう。オプションを何もつけずに実行すると、現在のジョブ一覧が表示されます。もし何も実行していなければ、何も表示されずに次の入力待ちになります。
以下の例では、あえて時間がかかる処理をバックグラウンド(裏側)で動かした状態で確認しています。
sleep 100 &
[1] 12345
jobs
[1]+ Running sleep 100 &
表示結果の意味は次の通りです。
- [1]:ジョブ番号です。ジョブを操作する際にこの番号を使います。
- + / -:直近に操作したジョブには「+」、その一つ前には「-」が表示されます。
- Running:現在の状態です。「実行中」を意味します。
- sleep 100 &:実行しているコマンド名です。
4. ジョブの状態を表す用語の解説
jobsコマンドを実行したときに表示される「状態」には、いくつかの種類があります。これを知っておくと、今パソコンの中で何が起きているかが分かります。
| 状態(英語) | 読み方 | 意味 |
|---|---|---|
| Running | ランニング | 現在、バックグラウンドで処理が進行中です。 |
| Stopped | ストップト | 一時停止状態です。終了はしていませんが、処理は進んでいません。 |
| Done | ダン | 処理が正常に完了しました。 |
| Terminated | ターミネイテッド | 強制終了されました。 |
5. ジョブをバックグラウンドへ送る方法
コマンドを実行する際に、最後に「&(アンパサンド)」をつけると、そのコマンドは最初からバックグラウンド(裏側)で動き始めます。これにより、コマンドの終了を待たずに次の入力ができるようになります。
例えば、大きなファイルのコピーなどをバックグラウンドで行う際の例です。
cp -r /large/data /backup/data &
[2] 12346
jobs
[1]- Running sleep 100 &
[2]+ Running cp -r /large/data /backup/data &
このように、複数のジョブを同時に動かしている場合でも、jobsコマンドを使えばそれぞれの進行状況を管理できます。
6. 実行中のコマンドを一時停止してジョブにする
「&」を付け忘れてコマンドを実行してしまい、画面が固まってしまった(入力できなくなった)場合でも焦る必要はありません。キーボードのCtrl + Z(コントロールキーを押しながらゼットキー)を押すことで、実行中の処理を一時停止し、ジョブとしてバックグラウンドへ送ることができます。
ping google.com
(ここでCtrl+Zを押す)
^Z
[3]+ Stopped ping google.com
jobs
[1] Running sleep 100 &
[2]- Running cp -r /large/data /backup/data &
[3]+ Stopped ping google.com
この「Stopped(一時停止)」状態になったジョブは、後で説明するbgコマンドやfgコマンドで再開させることが可能です。
7. jobsコマンドの便利なオプション
jobsコマンドには、より詳細な情報を得るためのオプションがあります。特によく使われるのが「-l」オプションです。これは「Long(ロング:長い)」の略で、プロセスのID(PID)も一緒に表示してくれます。
jobs -l
[1] 12345 Running sleep 100 &
[2] 12346 Running cp -r /large/data /backup/data &
[3] 12347 Stopped ping google.com
プロセスのID(PID)が分かると、killコマンドを使って特定のジョブを強制終了させたいときなどに非常に便利です。
8. ジョブの再開:fgコマンドとbgコマンド
jobsコマンドで確認したジョブを、再び手前(フォアグラウンド)に持ってきたり、裏側で再開させたりするコマンドを紹介します。
- fgコマンド(読み方:エフジー):Foreground(フォアグラウンド)の略。ジョブを画面の最前面に戻します。
- bgコマンド(読み方:ビージー):Background(バックグラウンド)の略。一時停止中のジョブを裏側で再開させます。
操作する際は、fg %1のように「%」の後にジョブ番号を指定します。
fg %3
ping google.com
(pingコマンドが再び画面に表示され、再開される)
9. システム管理者が使うジョブ確認
ここまでは一般ユーザーの操作を見てきましたが、システム全体の状態を確認したい場合は、ルートユーザー(管理者)権限が必要な場合があります。例えば、全ユーザーのプロセスを確認する際にはpsやtopを使いますが、自分のセッション内であればルートユーザーであってもjobsコマンドの使い方は同じです。
jobs
[1]+ Running updatedb &
システム全体のデータベースを更新するupdatedbコマンドなどを管理者としてバックグラウンド実行している様子です。管理作業においても、ジョブ管理は作業効率を上げるために欠かせない技術です。
10. ジョブ管理をマスターして効率アップ
Linuxを使いこなす上で、jobs、fg、bg、そしてCtrl + Zの組み合わせを覚えることは非常に重要です。これらをマスターすると、一つのターミナルウィンドウだけで、複数の重い処理を並行して管理できるようになります。
初心者のうちは、間違えて重い処理を実行してしまったときに、無理にターミナルを閉じたりせず、まずはjobsで状況を確認し、必要に応じて一時停止や終了を制御できるよう練習してみましょう。これが、サーバー構築やシェルスクリプト作成といった、より高度なステップへの第一歩となります。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linux環境における効率的な作業に欠かせないjobsコマンドの基礎知識から応用的な活用方法までを詳しく解説してきました。 Linuxのターミナル操作において、一つの画面で複数の処理を並行して進める「ジョブ管理」は、エンジニアとしての生産性を大きく左右する重要なスキルです。
jobsコマンドとジョブ管理の要点再確認
Linuxシステムでコマンドを実行する際、その実行単位を「ジョブ」と呼びます。OS全体で管理される「プロセス」とは異なり、ジョブは現在操作しているシェル(セッション)に紐付いた作業単位であることが特徴です。
jobsコマンドを使いこなすことで、バックグラウンドで動いている処理の状態(Running、Stopped、Doneなど)を正確に把握し、必要に応じて操作を切り替えることができます。
実践で役立つコマンド操作一覧
ジョブ管理において頻繁に利用するコマンドやショートカットキーを改めて整理しましょう。これらを組み合わせることで、ターミナル上でのマルチタスクが可能になります。
| 操作・コマンド | 実行されるアクション | 主な利用シーン |
|---|---|---|
jobs |
現在のジョブ一覧を表示 | 裏で何が動いているか確認したい時 |
jobs -l |
PID(プロセスID)付きで表示 | killコマンドで強制終了させたい時 |
| Ctrl + Z | 実行中の処理を一時停止 | 急いで別の作業を差し込みたい時 |
fg %ジョブ番号 |
フォアグラウンドで再開 | 停止した作業を画面に戻して進めたい時 |
bg %ジョブ番号 |
バックグラウンドで再開 | 停止した作業を裏側で進めさせたい時 |
コマンドの末尾に & |
最初から裏側で実行 | 時間のかかるバックアップやDLを行う時 |
応用:シェルスクリプト内でのジョブ管理例
実際の開発現場では、シェルスクリプト(.shファイル)の中で複数の処理を同時に走らせ、最後にそれらの終了を待つといった高度な使い方もされます。
以下のサンプルコードは、複数のデータ処理をバックグラウンドで並列実行し、jobsで確認しながら待機するイメージのスクリプトです。
#!/bin/bash
# 複数のデータ集計処理をバックグラウンドで開始
echo "データ処理を開始します..."
./process_data_A.sh &
./process_data_B.sh &
./process_data_C.sh &
# 現在実行中のジョブ一覧を表示して確認
echo "--- 現在の実行ジョブ ---"
jobs
# すべてのバックグラウンドジョブが終了するまで待機(waitコマンド)
wait
echo "すべての処理が完了しました。"
このように、jobsコマンドは単なる確認ツールとしてだけでなく、システム運用や自動化スクリプトのデバッグにおいても非常に強力な武器となります。
最初は「Ctrl + Z」で止めてしまったプログラムを「fg」で戻すという単純な操作から慣れていき、徐々に複雑なパイプラインやバックグラウンド処理の制御に挑戦してみてください。
生徒
「先生、ありがとうございました!jobsコマンドのおかげで、重い処理を実行している間もターミナルを閉じずに他の作業ができるようになりました。これまでは処理が終わるまでぼーっと待っていたので、すごく効率が上がった気がします!」
先生
「それは素晴らしい進歩ですね。Linuxの強みは、こういったマルチタスクをコマンドラインだけで完結させられる柔軟性にあります。ところで、バックグラウンドに送ったジョブをfgコマンドで戻す方法はバッチリですか?」
生徒
「はい!fg %1のようにジョブ番号を指定すればいいんですよね。もし番号を忘れても、まずjobsを打てば確認できるので安心です。あと、間違えて実行しちゃったコマンドをCtrl + Zで一旦止めて、jobs -lでPIDを調べてからkillで消すという流れも覚えました!」
先生
「完璧です。よく『プロセス管理(psコマンド)』と混同されがちですが、自分が今開いている窓の中の作業を管理するならjobsが一番手軽で直感的です。まさに『自分専用のタスクマネージャー』のような感覚で使ってみてください。」
生徒
「自分専用のタスクマネージャー、分かりやすい例えですね!今後は大きなファイルをダウンロードする時や、ソースコードをコンパイルする時も、末尾に&をつけてスマートに作業を進めてみようと思います。Linuxマスターへの道が少し見えてきました!」
先生
「その意気です。ジョブ管理をマスターすれば、サーバー構築やクラウド環境での操作も格段にスムーズになります。次は複数のジョブをパイプで繋いで、より複雑なデータ処理をバックグラウンドで行う方法なども学んでいくと面白いですよ。これからも一緒に頑張りましょう!」