Один и тот же процесс может быть запущен разными командами, например:
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 процессов совпавших с шаблоном, выводится счётчик количества совпавших процессов. Если ничего не найдено (нет совпадений), то возвращается ноль.
Связанные статьи:
- Лучшие терминальные мультиплексные инструменты (50%)
- Как просмотреть или отредактировать метаданные pdf или изображениях из командной строки Linux (50%)
- Как установить 7zip на Linux (50%)
- Работа с архивами в Linux (50%)
- Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
- ps обрезает текст команды (РЕШЕНО) (RANDOM - 50%)