If there is a process running with a long name, e.g. my_long_process_name, pgrep 'my_long_process_name' will not find the process, however, pgrep 'my_long_process' will. This is unexpected behavior. It appears the pattern is limited to 15 characters. If the process has more characters than this, the process should match if all 15 characters do.
(In reply to Chris Hiszpanski from comment #0) > It appears the pattern is limited to 15 characters. That's because of the comm field in linux task struct. > If the process has more characters than this, the process should match if all 15 characters do. killall and pidof do such matching. But it's easier there - they perform plain string compare. pgrep uses regex patterns, not just strings. Matching regex patterns against incomplete strings would be non-trivial.