Artificial intelligent assistant

pgrep full match not work, only part, why? I use pgrep from procps-3.3.10. If I have executable `aout_abcdefgh_ver27`, then pgrep aout_abcdefgh_ver27 returns 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_ver27 evgeniy 15241 0.0 0.0 12596 2264 pts/8 S+ 12:50 0:00 grep --colour=auto aout_abcdefgh_ver27 But if I run $ pgrep aout_abcdefgh_v 14806 `pgrep` returns what I expect, so I wonder why it works in such a strange way, maybe I should use some option for `pgrep` to work with full process name? It looks like it has a very short limit for the pattern, something like ~ 10 symbols.

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/status
Name: aout_abcdefgh_v


So 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

xcX3v84RxoQ-4GxG32940ukFUIEgYdPy 331e0f8bc1827e7a8b2a0e43cd40f2ff