Поиск количества процессов в Linux через командную строку - PullRequest
22 голосов
/ 17 июня 2010

Я искал лучший способ узнать количество запущенных процессов с одинаковым именем через командную строку в Linux.Например, если я хотел узнать количество запущенных процессов bash и получить «5».В настоящее время у меня есть скрипт, который выполняет pidof, а затем подсчитывает токенизированную строку.Это прекрасно работает, но мне было интересно, если есть лучший способ, который можно сделать полностью через командную строку.Заранее спасибо за помощь.

Ответы [ 9 ]

52 голосов
/ 17 июня 2010

В системах с pgrep опция -c возвращает счетчик числа процессов, соответствующих данному имени

pgrep -c command_name

Обратите внимание, что это совпадение в стиле grep, не точное совпадение, например, pgrep sh также будет соответствовать bash процессам.Если вы хотите точное совпадение, также используйте параметр -x.

Если pgrep недоступен, вы можете использовать ps и wc.

ps -C command_name --no-headers | wc -l

.Параметр -C для ps принимает в качестве аргумента command_name, и программа выводит таблицу информации о процессах, имя исполняемого файла которых соответствует заданному имени команды.Это точное совпадение, а не grep стиль.Опция --no-headers подавляет заголовки таблицы, которые обычно печатаются в первой строке.С --no-headers вы получаете одну строку для каждого согласованного процесса.Затем wc -l считает и печатает количество строк на своем входе.

11 голосов
/ 17 июня 2010
result=`ps -Al | grep command-name | wc -l`
echo $result
7 голосов
/ 17 июня 2010
ps -Al | grep -c bash
5 голосов
/ 08 января 2015

Вы можете попробовать:

ps -ef |grep -cw [p] rocess_name

ИЛИ

ps aux |grep -cw [p] rocess_name

например:

ps -ef |grep -cw [i] nit

3 голосов
/ 16 июля 2013

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

ps aux | grep [j]ava -c

Для новичков в Linux:

ps aux печатает всев настоящее время запущенные процессы, grep ищет все процессы, которые соответствуют слову java , скобки [] удаляют только что запущенный процесс, поэтому он не будет включать его в качестве запущенного процесса и, наконец, параметр -cобозначает количество.

2 голосов
/ 15 декабря 2016

Список всех имен процессов, сортировка и подсчет

ps --no-headers -A -o comm | sort | uniq -c

Вы также можете перечислить процесс, прикрепленный к tty

ps --no-headers a -o comm | sort | uniq -c

Вы можете фильтровать с помощью:

ps --no-headers -A -o comm | awk '{ list[$1] ++ } END { for (i in list) { if (list[i] > 10) printf ("%20s: %s\n", i, list[i]) } }'
1 голос
/ 03 апреля 2012

Следующий скрипт bash может быть запущен как задание cron, и вы можете получить электронную почту, если какой-либо процесс слишком сильно разветвляется.

for i in `ps -A -o comm= --sort=+comm | uniq`; 
do 
    if (( `ps -C $i --no-headers | wc -l` > 10 )); then 
        echo `hostname` $i `ps -C $i --no-headers | wc -l` ;
    fi
done

Замените 10 на номер вашей проблемы.

TODO: «10» также может быть передано в качестве параметра командной строки.Кроме того, несколько системных процессов могут быть включены в список исключений.

0 голосов
/ 09 июня 2019

ps aux | wc -l

Эта команда показывает количество процессов, запущенных в системе всеми пользователями.

Для конкретного пользователя вы можете использовать следующую команду:

ps -u <username> | wc -l

заменить на действительное имя пользователя перед запуском:)

0 голосов
/ 20 июля 2018

Вы можете использовать ps (покажет моментальный снимок процессов) с wc (будет считать количество слов, опция wc -l будет считать строки, то есть символы новой строки). Что очень легко и просто запомнить.

ps -e | grep processName | wc -l

Эта простая команда напечатает количество процессов, запущенных на текущем сервере. Если вы хотите узнать количество процессов, запущенных на текущем сервере для текущего пользователя, используйте параметр -U, равный ps.

ps -U root | grep processName | wc -l

изменить root с именем пользователя.

Но, как уже упоминалось во многих других ответах, вы также можете использовать ps -e | grep -c process_name, что более элегантно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...