Linux – pgrep コマンドの使い方

目次

概要

本記事では、特定の条件に一致するプロセスを検索し、そのプロセス ID (PID) を表示できる pgrep コマンドについて解説します。

基本的な使い方

pgrep コマンドの基本的な使用方法は、単に検索したいプロセス名を引数として指定することです。

pgrep プロセス名

例えば、sshd プロセスの PID を検索するには、次のようにします。

pgrep sshd

プロセス名に関する注意点

プロセス名はコマンド名ともいいます。 Linux カーネルから見たコマンド名は、実行ファイルの basename の最初の 15 バイトです。 そのため、15 バイトを超える場合は途中で切り捨てられます。

long_process_name_script.sh という名前のスクリプトを作成して、実行します。

#!/bin/bash
sleep infinity
chmod +x long_process_name_script.sh
./long_process_name_script.sh &

pgrep で検索する際に pgrep -l long_process_name_script で検索してもマッチしません。なぜなら、プロセス名は long_process_na という 15 文字になっているからです。15 文字以上のコマンド全体をマッチ対象としたい場合は -f オプションを指定します。

$ pgrep -l long_process_name_script
# 表示されない
$ pgrep -fl long_process_na
118332 long_process_na
$ pgrep -fl long_process_name_script
118332 long_process_na

オプションの一覧

以下に主要なオプションを示します:

マッチングに関するオプション

オプション 説明
-g, --pgroup <PGID,...> 指定されたプロセスグループ ID をマッチングする
-U, --uid <ID,...> 指定された実ユーザー ID でマッチングする
-u, --euid <ID,...> 指定された有効ユーザー ID でマッチングする
-G, --group <GID,...> 指定された実グループ ID をマッチングする
-P, --parent <PPID,...> 指定された親プロセスの子プロセスのみをマッチングする
-s, --session <SID,...> 指定されたセッション ID をマッチングする
-t, --terminal <tty,...> 指定されたターミナルでマッチングする
-x, --exact 指定されたコマンド名と正確に一致させてマッチングする
-r, --runstates <state> 指定された実行状態 [D,S,Z,…] をマッチングする
--ns <PID> 指定された PID と同じ名前空間に属するプロセスをマッチングする
-v, --inverse マッチング条件にマッチしない一覧を表示する
-f, --full 完全なプロセス名を使用してマッチングする
-i, --ignore-case 大文字小文字を区別せずにマッチングする
-n, --newest 最も最近開始されたプロセスを選択する
-o, --oldest 最も古く開始されたプロセスを選択する

表示に関するオプション

オプション 説明
-d, --delimiter <string> 出力区切り文字を指定する
-l, --list-name PID とプロセス名を一覧表示する
-a, --list-full PID と完全なコマンドを一覧表示する
-w, --lightweight すべての TID を一覧表示する
-c, --count マッチングしたプロセスの数を表示する
-F, --pidfile <file> ファイルから PID を読み取る
-L, --logpidfile PID ファイルがロックされていない場合は失敗する
--nslist <ns,...> --ns オプションで考慮される名前空間を一覧表示する (ipc, mnt, net, pid, user, uts のいずれか)

使用例

-l (リスト表示)

プロセス ID とプロセス名を表示します。

pgrep -l sshd

-u (ユーザー指定)

特定のユーザーが所有するプロセスを検索します。ユーザー名または UID を指定できます。

pgrep -u username sshd

-f (コマンドライン全体で検索)

プロセス名だけでなく、コマンドライン全体を対象に検索します。

pgrep -f "/usr/sbin/sshd"

-c (一致するプロセス数を表示)

一致するプロセスの数を表示します。

pgrep -c sshd

-d (区切り文字を指定)

出力される PID の区切り文字を指定します。デフォルトは改行ですが、カンマなどに変更できます。

pgrep -d ',' sshd

-n (最新のプロセス)

一致するプロセスの中で最も新しいプロセス ID を表示します。

pgrep -n sshd

-o (最古のプロセス)

一致するプロセスの中で最も古いプロセス ID を表示します。

pgrep -o sshd

コメント

コメントする

目次