procps-3.3.10のpgrepを使用します。
aout_abcdefgh_ver27
実行可能ファイルがある場合
pgrep aout_abcdefgh_ver27
ps aux | grep aout_abcdefgh_ver27
期待される結果のみを返します。
ps aux | grep aout_abcdefgh_ver27
evgeniy 14806 0.0 0.0 4016 672 pts/8 S 12:50 0:00 ./aout_abcdefgh_ver27
evgeniy 15241 0.0 0.0 12596 2264 pts/8 S+ 12:50 0:00 grep --colour=auto aout_abcdefgh_ver27
しかし、私が走ったら
$ pgrep aout_abcdefgh_v
14806
pgrep
私は期待どおりに返されますが、なぜそれほど奇妙な方法で動作するのか疑問に思います。pgrep
完全なプロセス名を処理するために使用するいくつかのオプションがありますか?
パターン制限は約10個の記号で非常に短いようです。
ベストアンサー1
問題は、基本的にpgrep
プロセスのみが検索されることです。名前。名前はコマンド全体の切り捨てられたバージョンです。そのプロセスのプロセスIDを見ると、名前が何であるかがわかります/proc/PID/status
。PID
たとえば、
$ ./aout_abcdefgh_ver27 &
[1] 14255 ## this is the PID
$ grep Name /proc/14255/status
Name: aout_abcdefgh_v
はい。pgrep
フラグがない場合は、実行可能ファイル名の最初の15文字のみが読み取られます。コマンドライン全体を検索して開始するには、次の-f
フラグが必要です(からman pgrep
)。
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
したがって、以下を使用する場合-f
:
$ pgrep -f aout_abcdefgh_ver27
14255