どのような状況でpgrep -xが有効なpidを返さないのですか?

どのような状況でpgrep -xが有効なpidを返さないのですか?

実行中のアプリケーションがあります。

$ ps -ef | grep hello_world
steve     9607  1816  0 09:11 ?        00:00:00 ./hello_world
steve    10093 21566  0 09:18 pts/4    00:00:00 grep hello_world

pgrep -fパターンを使用してpidを検索できます。

$ pgrep -f ./hello_world
9607
$ echo $?
0

$ pgrep -f hello_world
9607
$ echo $?
0

ただし、次のようにpgrep -x検索すると精密パターンマッチング、何も返さない

$ pgrep -x ./hello_world
$ echo $?
1

$ pgrep -x hello_world
$ echo $?
1

/procファイルシステムで正しいコマンドラインを確認すると、次のものが返されます。

$ cat /proc/9607/cmdline
./hello_world

私はなぜpgrep -x失敗するか。

ベストアンサー1

$ pgrep -x ./hello_world
$ echo $?
1

最初の式が一致しない理由は、正確なプロセス名の一致(例にpgrepプロセス名が含まれている)を見つけるように要求しましたが、検索文字列を指定したためです。hello_world./hello_world

$ pgrep -x hello_world
$ echo $?
1

2番目の検索がなぜ効果がないのかわかりません。 Ubuntu 14.04用なので、投稿にバグがあるか、最新バージョンにバグがあります。

$ ./dd &
[1] 6377
$ pgrep -x dd
6377

おすすめ記事