Подсчитать количество процессов с помощью ps -Af

Подсчитать количество процессов с помощью ps -Af

Мне нужно посчитать количество процессов emacs на машине, которую я использую удаленно, используя команду ps -Af. С чего мне вообще начать?

решение1

ps -Afэто не лучший подход.

Эта fопция излишняя и может вызвать ложное срабатывание, если процессы, не являющиеся emacs, используют emacs или строку, содержащую его, в качестве одного из своих параметров, не говоря уже о (маловероятном) случае пользователя с именем emacs.

Я бы предложил использовать эту более простую команду:

pgrep emacs | wc -l

решение2

ты можешь сделатьps -C emacs --no-heading | wc -l

ps -C commandвывести процессы по имени команды

EDIT: ps --helpочень интересно

решение3

Как сказал Хеннес, вы можете использовать " ps -AF | grep emacs | wc -l", чтобы сделать это. Но у вас также будет своя собственная команда. Чтобы избавиться от этой команды(команд), вы можете использовать " grep -v" (или --inverted-match), чтобы отфильтровать команды, которые вы не хотите учитывать. Так что это будет выглядеть так:ps -AF | grep emacs | grep -v grep | wc -l

решение4

Начните с первых принципов.

Начните с установления того, что именно делает команда, которую вам было предложено использовать, и как -Afработают указанные параметры ( ). Для этого прочитайте man ps:

-A Выбрать все процессы.
-f Выполнять полноформатный листинг. Эту опцию можно комбинировать со многими другими опциями в стиле UNIX для добавления дополнительных столбцов.

Итак, отправной точкой является вывод всех процессов, запущенных для вашего пользователя, перечисленных в полном формате. Выполните команду, чтобы увидеть полный вывод, прежде чем пытаться выполнить какую-либо обработку:

ps -Af

Чтобы подсчитать emacsпроцессы, вам нужно будет передать выходные данные через инструмент фильтрации для обработки выходных данных и/или подсчета соответствующих совпадений. grepЭто хороший вариант, но для эффективности и простоты я бы использовал awk:

ps -Af | awk '/emacs/ && !/awk/ { a++ } END { print a }'

При этом выполняется поиск по шаблону /emacs/, исключается шаблон самого поиска, !/awk/увеличивается количество совпадений { a++ }, а затем выводится общее количество { print a }.

Для этого требуется только один канал, и это элегантно решает проблему отсутствия возврата процесса поиска в вашем подсчете.

Связанный контент