O problema é que, por padrão, pgrep
procura apenas o processo nome . O nome é uma versão truncada do comando inteiro. Você pode ver qual é o nome, observando /proc/PID/status
, em que PID
é o ID do processo relevante. Por exemplo:
$ ./aout_abcdefgh_ver27 &
[1] 14255 ## this is the PID
$ grep Name /proc/14255/status
Name: aout_abcdefgh_v
Então, sim, pgrep
sem flags apenas lê os 15 primeiros caracteres do nome do executável. Para pesquisar a linha de comando completa usada para iniciá-lo, você precisa do sinalizador -f
(de man pgrep
):
-f, --full
The pattern is normally only matched against the process name.
When -f is set, the full command line is used.
Então, se você usa -f
:
$ pgrep -f aout_abcdefgh_ver27
14255