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 
  • PID PID некоторых процессов UNIX в ls -l
  • Какие флаги команды «ps» предназначены для формата флагов Unix и какие флаги для формата флагов BSD?
  • top / ps / mpstat, показывающий разный выход
  • Более читаемый ps
  • dbus-запуск и dbus-демон - что происходит
  • Вывод ps lstart изменен
  • Пожалуйста, объясните этот вывод команды ps -ef?
  • Как найти, какие процессы выполняются пользователем прямо сейчас?
  • Список, подключенный через пользователей SSH
  • Найти и убить процесс, который использует последовательный порт
  • Как перечислить все запущенные X-приложения?
  • Interesting Posts

    Ошибка передачи переменной из bash в php

    Bash: как распечатать дополнительный столбец, соответствующий IP-адресу для имени

    Символы имени действительной функции Shell

    Есть ли способ узнать, передается ли сценарий на eval?

    Установка centos и freebsd с последовательной консолью

    Автоматическая копия для сканирования нескольких URL-адресов

    Bad Keymap Предотвращение входа в Arch Linux

    Что означает «0t0», если смотреть на lsof output?

    Требуется ли почтовая команда для почтового сервера?

    Debian GNOME 2.30, рабочий стол больше не отвечает

    Как создать новую команду и как просмотреть код для команд

    Избегайте проблемы прокрутки терминала при использовании zle reset-prompt

    Как использовать графический интерфейс для удаленного сервера CentOS 6 через ssh?

    Какова наилучшая практика для представления логического значения в сценарии оболочки?

    Как найти смещение файловой системы ext4?

    Linux и Unix - лучшая ОС в мире.