zaLinux.ru

Как посчитать количество экземпляров определённого процесса (в том числе с аргументами)


Один и тот же процесс может быть запущен разными командами, например:

sleep 500
/bin/sleep 500
sleep 30

Первый и второй вариант различаются тем, что во втором случае указывается полный путь до исполнимого файла. Третий вариант отличается от предыдущих другим значением опции.

Предположим, нам нужно посчитать все запущенные экземпляры одной программы, независимо от того, каким образом она запущена. А также в зависимости от того, с какой опцией она запущена.

Для этого подходит программа pgrep, она ищет процесс и выводит в стандартный вывод список ID процессов, которые совпадают с выбранными критериями.

В рассмотренном выше примере, допустим, мы хотим посчитать только количество запущенных экземпляров sleep не зависимо от того, как выполнен запуск: sleep или /bin/sleep. Но нас интересуют только те экзепляры, которые запущены с опцией 500.


Этого можно добиться командой:

pgrep -fc 'sleep 500'

Она совпадает и с /bin/sleep 500, и с sleep 500.

Можно быть более точным:

pgrep -fc 'sleep 500$'

Символ $ означает конец строки. Следовательно, мы отсеем, например, sleep 5000.

Опция -f, --full: шаблон по умолчанию совпадает только с именем процесса. Когда установлена опция -f, используется полная строка команды.

Опция -c, --count: подавляет нормальный вывод; вместо ID процессов совпавших с шаблоном, выводится счётчик количества совпавших процессов. Если ничего не найдено (нет совпадений), то возвращается ноль.


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *