sudo pgrep -f соответствует произвольным строкам и возвращает увеличение pids

При отладке связанной проблемы я заметил, что pgrep возвращал PID для кажущихся произвольными шаблонов командной строки, например:

$ sudo pgrep -f "asdf" 13017 $ sudo pgrep -f ";lkj" 13023 $ sudo pgrep -f "qwer" 13035 $ sudo pgrep -f "poiu" 13046 $ sudo pgrep -f "blahblahblah" 14038 $ sudo pgrep -f "$(pwgen 16 1)" 14219 

Та же команда без sudo ничего не возвращала (как и ожидалось):

 $ pgrep -f blahblahblah 

Я пытался подключить PID к ps, чтобы посмотреть, какая команда была, но это не сработало:

 $ sudo pgrep -f blahblahblah | xargs ps -f -p UID PID PPID C STIME TTY TIME CMD 

Похоже, что процесс заканчивается слишком быстро. Затем я попытался использовать ps и grep, но это тоже не сработало (т. Е. Результатов не было):

 $ sudo ps -e -f | grep [a]sdf $ sudo ps -e -o command | grep asdf grep asdf 

Я также заметил, что, если я достаточно быстро переуступлю команду, мне показалось, что PID неуклонно поднимался:

 $ for i in $(seq 1 10); do sudo pgrep -f $(pwgen 4 1); done 14072 14075 14078 14081 14084 14087 14090 14093 14096 14099 $ for i in $(seq 1 10); do sudo pgrep -f blahblahblah; done 13071 13073 13075 13077 13079 13081 13083 13085 13087 13089 

В качестве проверки работоспособности я попытался использовать find и grep для поиска каталога proc:

 $ sudo find /proc/ -regex '/proc/[0-9]+/cmdline' -exec grep adsfasdf {} \; Binary file /proc/14113/cmdline matches Binary file /proc/14114/cmdline matches $ sudo find /proc/ -regex '/proc/[0-9]+/cmdline' -exec grep adsfasdf {} \; Binary file /proc/14735/cmdline matches Binary file /proc/14736/cmdline matches 

Опять же кажется, что PID поднимается и что cmdline соответствует произвольным строкам.

Я пробовал это как на CentOS 6.7, так и на Ubuntu 12.04 с теми же результатами. Когда я попробовал подобные эксперименты на своем Mac, тесты вернулись отрицательно – никаких тайных процессов.

Что тут происходит?

2 Solutions collect form web for “sudo pgrep -f соответствует произвольным строкам и возвращает увеличение pids”

Он показывает процесс sudo то есть PID является PID процесса sudo который является родителем команды pgrep вы запускаете, помещая после sudo . Когда вы выполняете поиск во всей командной строке (по -f ), процесс sudo появляется на выходе, потому что строка (шаблон) также является частью исходной команды sudo .

Используя -l и -a (если ваша поддержка pgrep ), вы получите лучшую идею.

Контрольная работа:

 % sudo pgrep -af "asdf" 4560 sudo pgrep -af asdf % sudo pgrep -lf "asdf" 4562 sudo % pgrep -af "asdf" % 

Он находит вашу команду sudo потому что строка, которую вы ищете с помощью «-f», также присутствует в полном списке ps sudo.

В основном, когда вы запускаете sudo pgrep -f xyz вы запускаете

 PID1 sudo pgrep -f xyz PID2 pgrep -f xyz 

Команда pgrep найдет и то, и другое проигнорирует, и сообщит PID1 как соответствие.

Естественно, PID будут увеличиваться, потому что при каждом запуске есть новая команда sudo !

  • Почему «ps -e | less` show 'less' среди процессов?
  • Как проверить процесс вместе с его аргументами в списке процессов?
  • Добавить поле sid в вывод ps -f
  • Получить время начала процесса независимо от обновлений NTP
  • Вычисление процессорного времени процесса в RHEL 5.3
  • Использование «ps -C java -o pid, user, cmd» Можно ли уменьшить вывод cmd?
  • Как определить исполняемый путь с его PID на AIX 5 или более
  • процесс не использует новую конфигурацию открытого файла, которую я установил?
  • Как проверить, остановлен ли процесс из командной строки?
  • Различное представление bash в команде «ps -f»
  • Как запустить Java-процесс, который будет рассматриваться не как «java ...» в списке процессов?
  • Что означает `init ` в столбце COMMAND ps?
  • Interesting Posts

    Разблокировка всех портов в маршрутизаторе при использовании Linux

    Какие меры предосторожности следует взять под управлением Windows 7 на виртуальной машине в Linux?

    Разделение и переименование файла

    Понять «IFS = read -r line»?

    Установка пакета Octave: «невозможно создать каталог установки»

    Как смонтировать раздел XFS через / etc / fstab, а пользователи без полномочий root могут использовать r / w?

    ProxyCommand используется для множественной пересылки и проверки подлинности запроса

    Как установить USB-накопитель во FreeBSD?

    Найдите номер строки, который содержит шаблон, используя специальный разделитель регулярных выражений

    Проблема с конфигурацией конфигурации PCI

    как передать смесь аргументов в скрипт и только из них необязательный -аргумент

    Почему Debian Jessie отключается, а не перезагружается после установки qemu-kvm?

    Отключение части монитора

    Каков размер TaskList?

    поиск строк в шаблонах сопоставления файлов, определенных в другом файле

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