pgrep полный матч не работает, только часть, почему?

Я использую pgrep из procps-3.3.10.

Если у меня есть исполняемый файл aout_abcdefgh_ver27 , тогда

 pgrep aout_abcdefgh_ver27 

ничего не возвращает, а ps aux | grep aout_abcdefgh_ver27 ps aux | grep aout_abcdefgh_ver27 возвращает ожидаемый результат:

 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 

Но если я забегу

 $ pgrep aout_abcdefgh_v 14806 

pgrep возвращает то, что я ожидаю, поэтому я удивляюсь, почему это работает так странно, может быть, мне нужно использовать какой-то параметр для pgrep для работы с полным именем процесса?

Похоже, у него очень короткий предел для шаблона, что-то вроде ~ 10 символов.

One Solution collect form web for “pgrep полный матч не работает, только часть, почему?”

Проблема в том, что по умолчанию pgrep ищет только имя процесса. Имя – это усеченная версия всей команды. Вы можете узнать, что такое имя, если посмотреть на /proc/PID/status где PID – это идентификатор процесса соответствующего процесса. Например:

 $ ./aout_abcdefgh_ver27 & [1] 14255 ## this is the PID $ grep Name /proc/14255/status Name: aout_abcdefgh_v 

Так что да, pgrep без флагов считывает только первые 15 символов имени исполняемого файла. Чтобы выполнить поиск в полной командной строке, используемой для ее запуска, вам нужен флаг -f (от man pgrep ):

 -f, --full The pattern is normally only matched against the process name. When -f is set, the full command line is used. 

Итак, если вы используете -f :

 $ pgrep -f aout_abcdefgh_ver27 14255 
  • Как сделать Ubuntu Linux 16.10 системным монитором?% Загрузка процессора согласуется с ps или top для процесса Firefox на четырехъядерном процессоре?
  • Как ps получает исполняемый файл от процессов других пользователей?
  • ps aux: zero VSZ
  • Элегантный список детских процессов
  • процесс id и процесс убийства - ps commmand
  • Как получить название медиа, воспроизводимого в VLC или других медиаплеерах с использованием CLI?
  • Процесс, не указанный в «ps -ef» (AIX 7.1)
  • Top и ps не показывают тот же результат процессора
  • Как смотреть pgrep?
  • Общая оперативная память, используемая программой с `ps`?
  • Что такое «лидеры сессий» в `ps`?
  • Linux и Unix - лучшая ОС в мире.