このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Linux】実行中のバックグラウンドジョブの表示:jobsコマンド

実行中のバックグラウンドジョブの表示:jobsコマンド
Linuxのシェル環境では、ユーザーは複数のプロセスやコマンドを同時に実行することができます。これには、前景(フォアグラウンド)での実行と、背景(バックグラウンド)での実行の2つの方法があります。システム管理者や開発者は、複数のタスクを効率的に管理するためにバックグラウンドジョブを利用することがよくあります。これにより、システムの操作性が向上し、同時に複数のプロセスを並行して実行することが可能となります。
しかし、バックグラウンドで実行されているジョブを適切に管理することは、システムの安定性と効率性を保つために重要です。そこで活躍するのが、jobsコマンドです。このコマンドを使用することで、ユーザーは現在のシェルセッション内で実行中または停止中のすべてのバックグラウンドジョブを簡単に確認できます。

jobsコマンドの概要
jobsコマンドは、シェルで実行中または停止中のバックグラウンドジョブを表示するためのコマンドです。シェルセッション内でジョブ管理を行う際に便利です。
【構文】jobs [オプション]
主なオプションと説明
| オプション | 説明 |
|---|---|
| -l | 通常の情報に加えてプロセス ID をリストします。 |
| -n | 前回の通知以降にステータスが変更されたプロセスのみをリストします。 |
| -p | プロセス ID のみをリストします。 |
| -r | 実行中のジョブのみを表示します。 |
| -s | 停止中のジョブのみを表示します。 |
コマンドの使用例と解説
1.ジョブの実行
以下のコマンドを実行します。
- 「
sleep 100 &」コマンド - 「
kill -s SIGSTOP 3627」コマンド※プロセスIDは、実行環境で異なります。 - 「
tail -f /var/log/syslog &」コマンド
user01@ubuntu-vm:~$ sleep 100 &
[1] 3627
user01@ubuntu-vm:~$ kill -s SIGSTOP 3627
user01@ubuntu-vm:~$ jobs
[1]+ 停止 sleep 100
user01@ubuntu-vm:~$ tail -f /var/log/syslog &
[2] 3706
[1]+ 停止 sleep 100
user01@ubuntu-vm:~$ Jul 13 02:40:11 ubuntu-vm systemd[2381]: Started GNOME Terminal Server.
Jul 13 02:40:11 ubuntu-vm systemd[2381]: Started VTE child process 3613 launched by gnome-terminal-server process 3571.
(省略)2.基本的なjobsコマンドの使用
・「jobs」コマンドを実行します。
user01@ubuntu-vm:~$ jobs
[1]+ 停止 sleep 100
[2]- 実行中 tail -f /var/log/syslog &jobsコマンドは、現在のシェルセッションで実行中または停止中のジョブのリストを表示します。- 各ジョブにはジョブ番号(例えば、[1])が割り当てられ、ジョブのステータス(停止中、実行中など)が表示されます。
+はカレントジョブ、-は以前のジョブを示します。
3.プロセスIDを含むジョブのリストを表示
・「jobs -l」コマンドを実行します。
user01@ubuntu-vm:~$ jobs -l
[1]+ 3704 停止 (シグナル) sleep 100
[2]- 3706 実行中 tail -f /var/log/syslog &-lオプションを使用することで、各ジョブのプロセスIDが表示されます。
4.実行中のジョブのみを表示
・「jobs -r」コマンドを実行します。
-rオプションを使用すると、実行中のジョブのみが表示されます。
user01@ubuntu-vm:~$ jobs -r
[2]- 実行中 tail -f /var/log/syslog &5.停止中のジョブのみを表示
・「jobs -s」コマンドを実行します。
-sオプションを使用すると、停止中のジョブのみが表示されます。
user01@ubuntu-vm:~$ jobs -s
[1]+ 停止 sleep 100まとめ
jobsコマンドは、シェルセッション内でのジョブ管理において非常に有用なツールです。ジョブの状態やプロセスIDを確認することで、バックグラウンドジョブの管理が容易になります。以下にまとめます。
| 機能 | コマンド構文 | 説明 |
|---|---|---|
| ジョブ一覧表示 | jobs | バックグラウンドジョブの一覧を表示 |
| PID表示 | jobs -l | 各ジョブのプロセスIDを表示 |
| 実行中ジョブ表示 | jobs -r | 実行中のジョブのみを表示 |
| 停止中ジョブ表示 | jobs -s | 停止中のジョブのみを表示 |
jobsコマンドを活用することで、シェルセッション内のジョブの状況を簡単に把握し、効率的に管理することができます。
