Linux jobs コマンド

Linux 命令大全Linux コマンド大全

jobsLinux/Unix システムにおいて、現在のシェルセッション内のバックグラウンドタスクを表示および管理するための組み込みコマンドです。ユーザーは次のことができます:

  • バックグラウンドで実行中のすべてのジョブの状態を確認する
  • ジョブのフォアグラウンドとバックグラウンドの切り替えを制御する
  • 複数の並行タスクの実行を管理する

端末で時間のかかるコマンドを実行するとき、jobsjobs コマンドは、これらのバックグラウンドプロセスを効率的に管理するのに役立ちます。


基本構文

jobs [选项] [作业标识符]

よく使われるオプション

オプション 説明
-l ジョブの PID(プロセスID)を表示する
-p ジョブのプロセスグループIDのみを表示する
-n 前回の通知以降に状態が変化したジョブのみを表示する
-r 実行中のジョブのみを表示する
-s 停止したジョブのみを表示する

核心機能の詳細解説

1. バックグラウンドジョブの確認

最も簡単な使い方は、直接jobsコマンドを入力することです:

例

$ jobs
[1]  - running    sleep 100 &
[2]  + stopped    vim file.txt

出力の説明:

  • [1]:ジョブ番号(Job ID)
  • -/+:-前のジョブを示し、+現在のジョブを示します。
  • running/stopped:ジョブ状態
  • 最後に、そのジョブを起動したコマンドが表示されます。

2. 詳細なプロセス情報の表示

使用する-lオプションで、ジョブのプロセスIDを表示します:

例

$ jobs -l
[1]  - 12345 running    sleep 100 &
[2]  + 12356 stopped    vim file.txt

3. 特定の状態のジョブのフィルタリング

例

# 実行中のジョブのみを表示
$ jobs -r

# 停止したジョブのみを表示
$ jobs -s

実際の活用シーン

シーン1:長時間タスクのバックグラウンド実行

例

# 時間のかかるタスクを起動してバックグラウンドに配置する
$ long_running_command &

# バックグラウンドジョブを確認する
$ jobs
[1]  + running    long_running_command &

シーン2:ジョブの一時停止と再開

例

# vimを起動する
$ vim file.txt

# Ctrl+Z を押して vim を一時停止する
^Z
[1]  + stopped    vim file.txt

# 停止したジョブを確認する
$ jobs -s
[1]  + stopped    vim file.txt

# vim をフォアグラウンドに戻して実行を再開する
$ fg %1

シーン3:複数のバックグラウンドジョブの管理

例

# 3つのバックグラウンドタスクを起動する
$ sleep 100 &
$ sleep 200 &
$ sleep 300 &

# すべてのジョブを確認する
$ jobs -l
[1]   12345 running    sleep 100 &
[2]  -12356 running    sleep 200 &
[3]  +12367 running    sleep 300 &

# ジョブ2をフォアグラウンドに戻す
$ fg %2

# ジョブ3を終了する
$ kill %3

ジョブ制御コマンドの組み合わせ

jobs通常、他のジョブ制御コマンドと組み合わせて使用します:

コマンド 説明 例
& コマンドをバックグラウンドで実行する command &
Ctrl+Z 現在のフォアグラウンドジョブを一時停止する キーの組み合わせ
fg ジョブをフォアグラウンドに戻す fg %1
bg 停止したジョブをバックグラウンドで再開する bg %2
kill 指定したジョブを終了する kill %3

よくある質問と回答

Q1: なぜ端末を閉じるとバックグラウンドジョブが終了するのですか?

A: デフォルトでは、バックグラウンドジョブは端末セッションに関連付けられています。使用nohup 或 disownすると、端末を閉じた後もジョブを実行し続けることができます:

例

$ nohup long_running_command &

Q2: 特定のジョブを参照するにはどうすればよいですか?

A: を使用し%ジョブ番号を加えます:

  • %1:ジョブ1
  • %2:ジョブ2
  • %+ 或 %%:現在のジョブ
  • %-:前のジョブ

Q3: jobs コマンドと ps コマンドの違いは何ですか?

A:

  • jobs現在のシェルセッション内のジョブのみを表示する
  • ps他のユーザーや端末のプロセスを含む、システム内のすべてのプロセスを表示する

ベストプラクティスの推奨

  1. バックグラウンドジョブの出力をリダイレクトする:現在の端末への出力干渉を避ける

    $ command > output.log 2>&1 &
  2. 説明的な名前を使用する:異なるジョブを識別しやすくする

    $ (sleep 300; echo "Done") & 
  3. ジョブの状態を定期的に確認する:未完了のジョブが大量に蓄積されるのを防ぐ

    $ watch -n 60 jobs
  4. 重要なジョブには nohup を使用する:端末が切断された後も実行を継続できるようにする

    $ nohup important_command &

まとめのフローチャート

Linux 命令大全Linux コマンド大全

その他の拡張