I use pgrep from procps-3.3.10.If I have executable aout_abcdefgh_ver27,then pgrep aout_abcdefgh_ver27returns nothing, while ps aux | grep aout_abcdefgh_ver27 returns the expected result:ps aux | grep aout_abcdefgh_ver27 evgeniy  14806  0.0  0.0   4016   672 pts/8    S    12:50   0:00 ./aout_abcdefgh_ver27evgeniy  15241  0.0  0.0  12596  2264 pts/8    S+   12:50   0:00 grep --colour=auto aout_abcdefgh_ver27But if I run$ pgrep aout_abcdefgh_v14806pgrep returns what I expect, so I wonder why it works in such a strange way, maybe I should use some option for pgrep to workwith full process name?It looks like it has a very short limit for the pattern, something like ~ 10 symbols.
pgrep full match not work, only part, why?
ps;process management
The problem is that by default, pgrep only searches the process name. The name is a truncated version of the entire command. You can see what the name is by looking at /proc/PID/status where PID is the process ID of the relevant process. For example:$ ./aout_abcdefgh_ver27 &[1] 14255                    ## this is the PID$ grep Name /proc/14255/statusName:   aout_abcdefgh_vSo yes, pgrep with no flags only reads the first 15 characters of the executable's name. To search the full command line used to launch it, you need the -f flag (from man pgrep):-f, --full     The pattern is normally only matched against the process name.       When -f is set, the full command line is used.So, if you use -f:$ pgrep -f aout_abcdefgh_ver27 14255