実行中のアプリケーションがあります。
$ 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