предел длины шаблона pgrep

pgrep ничего не возвращает, если длина шаблона превышает 15 символов. Я не могу найти в справочной странице ничего о максимальной длине паттерна.

Это ошибка?

для целей изложения я создал процесс под названием 12345678901234567890

$ pgrep 12345678901234
5367
$ pgrep 123456789012345
5367
$ pgrep 1234567890123456
$ 
6
задан 18 October 2013 в 18:55

2 ответа

Я думаю, что это не предел на длину шаблона в pgrep самостоятельно, но предел на длину коммуникации (команда) поле в/proc / [pid] / файлы статистики (который является где информация в ps прибывает из).

Согласно man proc, определения для/proc / [pid] / статистика прибывают из/usr/src/linux/fs/proc/array.c, таким образом, необходимо было бы там искать категорический ответ.

2
ответ дан 18 October 2013 в 18:55

Согласно pgrep страница справочника (шахта акцента):

Примечания

Имя процесса, используемое для соответствия, ограничено этими 15 символами, существующими в выводе /proc/pid/stat. Используйте -f опция соответствовать против полной командной строки, /proc/pid/cmdline.

Причина состоит в том, что имена процесса ограничены 16 байтами включая ПУСТОЙ байт завершения. От prctl страница справочника:

PR_SET_NAME (начиная с Linux 2.6.9)

Определите имя вызывающего потока, с помощью значения в месте, которым указывают (char *) arg2. Имя может быть 16 байтов длиной, включая завершающийся пустой байт. (Если длина строки, включая завершающийся пустой байт, превышает 16 байтов, строка является тихо усеченной.)

Посмотрите то, Что максимуму позволяют предел на длину имени процесса?

3
ответ дан 18 October 2013 в 18:55

Другие вопросы по тегам:

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