このページで解説している内容は、以下の 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コマンドを活用することで、シェルセッション内のジョブの状況を簡単に把握し、効率的に管理することができます。