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を表示します。
重要な点として、システムを再起動できないような環境でゾンビプロセスを削除したい場合には、 pgrep
と pkill
を一緒に利用できます。 pgrep
で特定のゾンビプロセスのIDを特定し、その後 pkill
を使って該当のプロセスを終了させることが可能です。
記事の内容は理解できましたか?