概要
`pgrep`は、プロセス名、ユーザーID、ターミナル、親プロセスIDなど、さまざまな条件でプロセスをフィルタリングし、対応するPIDを返します。スクリプトで特定のプロセスを見つけて制御したり、状態を確認したりする際に便利です。
主な機能
- 正規表現による検索をサポート
- ユーザー/グループごとのプロセスフィルタリング
- 完全なコマンドライン(full command line)での検索が可能
- 最も古いまたは最新のプロセスを選択するオプションを提供
主なオプション
検索条件
出力形式とソート
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`pgrep` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
特定のプロセスPIDを検索
pgrep sshd
`sshd`という名前のプロセスのIDを検索します。
ユーザー別プロセスPIDを検索
pgrep -u root
`root`ユーザーが実行しているすべてのプロセスのIDを検索します。
PIDと名前を一緒に出力
pgrep -l firefox
`firefox`プロセスのIDと名前を一緒に出力します。
完全なコマンドラインで検索
pgrep -f "apache2.*worker"
完全なコマンドラインに`apache2`と`worker`の両方が含まれるプロセスのIDを検索します。
完全に一致するプロセスを検索
pgrep -x ssh
名前が正確に`ssh`であるプロセスのIDを検索します。(`sshd`は除外)
最も新しいプロセスを検索
pgrep -n chrome
`chrome`プロセスの中で最も新しく開始されたプロセスのIDを検索します。
ヒントと注意点
`pgrep`は強力ですが、誤って使用すると意図しないプロセスを終了させたり、影響を与えたりする可能性があるため注意が必要です。
pkillとの連携
pgrepで見つけたPIDをkillコマンドに手動で渡す代わりに、pkillコマンドを使用すると、pgrepと同じ検索条件でプロセスを直接終了させたり、シグナルを送信したりできるため便利です。例えば、pkill -f "nginx.*worker"はnginxワーカープロセスを直接終了させます。
正規表現の活用
pgrepはデフォルトで正規表現をサポートしています。これを活用することで、複雑なパターンマッチングが可能です。
pgrep 'httpd|nginx'はhttpdまたはnginxプロセスを検索します。pgrep -f '^/usr/bin/python3.*script.py$'のように-fオプションと組み合わせて使用すると、特定のスクリプト実行を正確に見つけることができます。
完全一致のための-xオプション
pgrepはデフォルトで部分一致を行います。例えばpgrep sshはsshだけでなくsshdも検索します。正確にsshという名前のプロセスのみを検索するには-xオプションを使用してください。これは意図しないプロセスに影響を与えることを防ぐ上で重要です。