То ps aux | grep x команда дает "лучшие" результаты, чем pgrep x по сути, потому, что вам не хватает опции с последним.
Просто используйте -f вариант для pgrep для поиска по всей командной строке, а не только по имени процесса, которое является его поведением по умолчанию, например:
pgrep -f php5
В отличие от ps | grep конструкция, с помощью которой вам нужно отфильтровать grep линия или используйте приемы с шаблоном, pgrep просто не будет выбирать себя по замыслу.
Более того, если ваш шаблон появится в psUSER столбец, вы получите нежелательные процессы в выходных данных, pgrep не страдает от этого недостатка.
Если вам нужна полная информация, а не только PID, вы можете использовать:
В это время, ps даст более полный результат, чем pgep -f поскольку pgrep ограничен первыми 4096 символами (часто затрагивающими пользователей Java, ищущих класс ввода Java-программы с длинным путем к классу). Отслеживание ошибок это: https://gitlab.com/procps-ng/procps/issues/86