1. ホーム
  2. コース一覧
  3. LinuC Level1 v10.0 対策コース(パート1)
  4. プロセス群の選択・並べ替えについて【pgrep編】

中級

LinuC Level1 v10.0 対策コース(パート1)

LinuC Level1 v10.0 対策コース(パート1)11/39

プロセス群の選択・並べ替えについて【pgrep編】

こちらの記事ではプロセスを特定・選択する方法を解説します。

プロセスの特定や選択を行うには、 pgrep コマンドを使用します。

プロセス

プロセスは、システム内で実行中のプログラムを指します。システム内では常に複数のプログラムが稼働しており、それら一つ一つがプロセスと呼ばれます。ユーザーがプログラムを実行したり、PCが起動された際に新たなプロセスが生成されます。そのプログラムの処理が終了すれば、そのプロセスは消滅します。なお、全てのプロセスには一意のプロセスIDが割り振られます。

プロセスIDを用いて特定のプロセスを表示したい場合、 ps コマンドの出力をパイプ( | )を用いて grep コマンドに渡します。これにより、特定のプロセスIDを含む行だけがフィルタリングされ、表示されます。

具体的には次のようなコマンドを使用します。

ps aux | grep [プロセスID]

# 例
ps aux | grep init
root       165  0.0  0.0    904    92 ?        S    09:32   0:00 /init

ここで、 [プロセスID] には調べたいプロセスのIDを指定します。なお、 ps aux はシステム上の全てのプロセスを表示するコマンドで、 grep はその出力の中から指定したパターンを含む行だけを表示するコマンドです。

pgrep

pgrep コマンドは、指定した条件(プロセス名やユーザー名など)に一致するプロセスの プロセスID を表示します。 kill コマンドでプロセスを終了させる際など、プロセスIDを知りたい場合に便利です。

以下に、 pgrep コマンドのオプション一覧とその使用例を示します:

プロセス名に"apache"を含むプロセスIDを表示:

pgrep -f apache
# 出力例: 166

プロセス名が"init"と一致し、その絶対パスを表示:

pgrep -a init
# 出力例: 166 /init

ユーザー名"user1"のプロセスIDを表示:

pgrep -u user1 init
# 出力例: 166

端末"pts/1"で実行されているプロセスIDを表示:

pgrep -t pts/1 ".*"
# 出力例: 147

該当するプロセスを探し出し、pkillコマンドでそれを終了させる場合は次のようにします:

pgrep -f apache
# 出力例: 166

pkill -f apache # "apache"という名前のプロセス全体を終了

pgrepで並べ替えを行うには

pgrep の出力結果はデフォルトでは昇順です。最新のものを表示するには -n オプション、最も古いものを表示するには -o オプションを使用します。

pgrep は指定した条件に一致するプロセスのPIDを取得するコマンドですが、その出力を sort コマンドによって並べ替えることも可能です。

以下は、 pgrep コマンドで"bash"という名前のプロセスに一致するPIDを取得し、その結果を sort コマンドでPIDの降順に並べ替えて表示する例です。

pgrep bash | sort -rn

上記の例では、 pgrep bash で"bash"という名前のプロセスに一致するPIDを取得し、パイプ演算子( | )でその結果を sort コマンドに渡しています。 sort コマンドの -rn オプションにより、PIDが降順に並べ替えられます。

ただし、 pgrep コマンドは出力形式がPIDのみの単純な一覧形式であるため、 sort コマンドでの並べ替えではPID以外の情報は含まれません。それに対し、 ps コマンドではPID以外にもプロセス名や状態などの詳細な情報を取得できるため、より詳細な並べ替えが可能となります。

まとめ

この記事では、 pgrep コマンドについて解説しました。

pgrep コマンドは、プロセス名やユーザー名など、指定した条件に一致するプロセスのプロセスIDを表示します。

重要な点として、システムを再起動できないような環境でゾンビプロセスを削除したい場合には、 pgreppkill を一緒に利用できます。 pgrep で特定のゾンビプロセスのIDを特定し、その後 pkill を使って該当のプロセスを終了させることが可能です。

記事の内容は理解できましたか?