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

Я обнаружил, что моя аналогичная проблема связана с файл конфигурации fuse в:

/etc/fuse.conf

Я не комментировал:

user_allow_other
5
02.03.2016, 12:09
1 ответ

Проблема в том, что по умолчанию pgrep ищет только процесс name. Имя - это усеченная версия всей команды. Вы можете узнать, что это за имя, посмотрев /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
24
27.01.2020, 20:33

Теги

Похожие вопросы