プロセス管理


pgrepとは

プロセス名やその他の属性に基づいてプロセスを検索するコマンドラインツールです。

pgrep -u root sshd # rootユーザーが実行しているsshdプロセスを検索

pkillとは

pkill -u username  # 特定ユーザーの全プロセスを終了
pkill firefox      # プロセス名がパターンに一致する場合にSIGTERM

psとは

現在実行中のプロセスに関する情報を表示するコマンドラインツールです。

ps aux  # 全ユーザーの全プロセスを詳細表示

killとは

プロセスIDを指定してプロセスにシグナルを送信するコマンドラインツールです。

kill -9 1234  # プロセスID 1234のプロセスを強制終了

主要なオプションには以下があります:

  • -9 (SIGKILL): プロセスを強制終了します。プロセスは即座に終了し、クリーンアップ処理を行う機会がありません。
  • -15 (SIGTERM): デフォルトのシグナルで、プロセスに正常終了を要求します。
  • -1 (SIGHUP): プロセスに設定の再読み込みを要求します。

例:kill -9 1234 はプロセスID 1234のプロセスを強制終了します。

fg, bg, jobsの使い方

これらのコマンドはジョブ制御に使用されます。

これらのコマンドを使用することで、複数のジョブを効率的に管理し、シェル上での作業を柔軟に行うことができます。

jobs

jobsコマンドは、現在のシェルセッションでバックグラウンドで実行されているジョブのリストを表示します。

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

fg

fgコマンドは、バックグラウンドジョブをフォアグラウンドに移動します。

$ fg %1  # ジョブ番号1をフォアグラウンドに移動

bg

bgコマンドは、一時停止されたジョブをバックグラウンドで再開します。

$ sleep 100
^Z
[1]  + 18653 suspended  sleep 100
$ bg
[1]  + 18653 continued  sleep 100

キー操作

ジョブをバックグラウンドで実行する方法には、主に2つあります:

  1. コマンド実行時にバックグラウンドで起動する
  2. 実行中のジョブをバックグラウンドに移動する
コマンド実行時にバックグラウンドで起動する

コマンドの末尾に `&` を付けることで、そのコマンドをバックグラウンドで実行できます。

$ sleep 100 &
[1] 12345

この場合、sleep 100 コマンドがバックグラウンドで実行され、ジョブ番号と プロセスID が表示されます。

実行中のジョブをバックグラウンドに移動する

実行中のジョブをバックグラウンドに移動するには、以下の手順を踏みます:

  1. 実行中のジョブを一時停止する:Ctrl + Z キーを押します。
  2. 一時停止したジョブをバックグラウンドで再開する:bg コマンドを使用します。
$ sleep 100
^Z
[1]  + 12345 suspended  sleep 100
$ bg
[1]  + 12345 continued  sleep 100

この操作により、フォアグラウンドで実行していたジョブをバックグラウンドに移動できます。

^ZとあるのはCtrl + Z キーのことです。

その他のキー操作
  • Ctrl + C: フォアグラウンドで実行中のジョブを終了します。
  • Ctrl + D: 標準入力の終了(EOF)を送信します。多くのプログラムはこれにより終了します。

これらのキー操作と jobsfgbg コマンドを組み合わせることで、効率的にジョブを管理できます。バックグラウンドジョブの使用により、複数のタスクを同時に実行しながら、シェルの対話的な使用を継続できます。