rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

pgrepコマンドについて

2021 Feb. 25.
2021 Feb. 20.

参考元 Linux - プロセス名とは何か?(pgrep)|teratail

オプションを付けない"pgrep STRING"はパスの付かないプロセス名リストに対してSTRINGを検索する。
"pgrep -f STRING"はフルパス付きプロセス名リストに対してSTRINGを検索する


"pgrep STRING"は"ps -e"のプロセス名とのマッチを調べる。
"ps -e"のプロセス名はパスの付かないコマンド名である。
STRING全体がマッチする"ps -e"のプロセス名を調べる。
"ps -e"のプロセス名は16文字目以降は切り捨てられている。
STRING文字列が16文字以上だと"ps -e"にマッチしないので、pgrepでもマッチしない。

"pgrep -f STRING"は"ps -ef"のプロセス名とのマッチを調べる。
"ps -ef"のプロセス名はフルパス付きコマンド名である。
STRING全体がマッチする"ps -ef"のプロセス名を調べる。

同名のコマンドが次のように複数存在するとする。
/usr/local/bin/command.sh
/{HOME}/USER/bin/command.sh

両方のcommand.shを起動状態にする。

一方のcommand.shの中で pgrep -f "$0" を実行しても、$0にはコマンドのフルパスが入っているのでpgrepでは他方のcommand.shプロセスはマッチしない。