ps
возвраты bash
как название процесса... Я хотел бы название сценария оболочки вместо этого.
Например, если мой сценарий TestEric.sh
, Я хотел бы перечислить количество экземпляров того сценария, в настоящее время работающего.
Проблема здесь - это ps
значением по умолчанию только показывает основную команду в ее выводе, не целую командную строку включая аргументы.
Если Вы запускаете свой сценарий с bash TestEric.sh
, основная команда bash
. Если Вы выполняете его как TestEric.sh
(возможно включая ее путь), основная команда будет этим и не ударом.
Можно легко использовать pgrep
вместо ps
перечислять процессы, фильтрованные по имени. Это имеет a -f
флаг, который заставляет его соответствовать данному шаблону против целой командной строки вместо просто основной команды.
-a
флаг заставляет его отобразить ту целую командную строку в своем выводе для отладки целей вместо просто PID. После того как Вы проверили, что это работает, Вы можете/должны, удаляют его снова в Вашем сценарии.
Попробуйте это:
pgrep -f -a TestEric.sh
Можно позже считать использование процессов wc
путем подсчета pgrep
выходные строки:
pgrep -f TestEric.sh | wc -l
Вы могли попытаться работать ps u
вместо этого. Из страниц справочника u опция соответствует display user-oriented format
то, которое отобразит и оболочку, раньше запускало скрипт и название самого сценария.
По-видимому, помогает, добавляю ли я !#/bin/bash
в начале файла... Затем название сценария появляется в ps
отчет.