Поиск количества процессов в Linux через командную строку

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

Ответы

Ответ 1

В системах с доступными 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 подсчитывает и печатает количество строк на входе.

Ответ 2

result=`ps -Al | grep command-name | wc -l`
echo $result

Ответ 3

ps -Al | grep -c bash

Ответ 4

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

ps -ef | grep -cw [p] rocess_name

ИЛИ

ps aux | grep -cw [p] rocess_name

например:

ps -ef | grep -cw [i] nit

Ответ 5

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

ps aux | grep [j]ava -c

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

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

Ответ 6

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

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]) } }'

Ответ 7

Следующее bash script может выполняться как задание 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" также может передаваться как параметр командной строки. Кроме того, в список исключений можно добавить несколько системных процессов.

Ответ 8

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

ps -e | grep processName | wc -l

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

ps -U root | grep processName | wc -l

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

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

Ответ 9

ps aux | wc -l

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

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

ps -u <username> | wc -l

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

Ответ 10

Я не знаю, что это такое на других дистрибутивах, но на Ubuntu это:

nproc

nproc является частью coreutils. Таким образом, он должен быть доступен на большинстве дистрибутивов Linux.