Получить количество запущенных процессов по имени в Bash - PullRequest
0 голосов
/ 10 июля 2020

Предположим, я запустил в терминале следующее:

pgrep Google Chrome

, и он выдает следующий вывод всех PID:

110
311
142

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

110
311
142

There are currently 3 processes running under the application 'Google Chrome'

Ответы [ 2 ]

1 голос
/ 10 июля 2020

Я считаю, что функции-оболочки очень полезны для такого рода вещей:

pgrep() {
  local app=${!#} pids
  # now invoke the *command* pgrep and
  # capture the output into an array of lines
  readarray -t pids < <(command pgrep "$@")
  # print the output
  printf "%s\n" "${pids[@]}"
  # and print the summary
  printf "\nThere are currently %d processes running under the application '%s'\n" \
    "${#pids[@]}" \
    "$app"
}

Это также позволяет вам использовать параметры pgrep, например pgrep -fl "Google Chrome"

Проблема в том, что pgrep позволяет вам указать несколько шаблонов, и эта функция захватывает только последний как «приложение».

0 голосов
/ 10 июля 2020

Для вывода в указанном вами формате:

proc="Google Chrome"

pids=$(pgrep "$proc")
if [[ -n $pids ]]; then
    printf "%s\n\nThere are currently %d processes running under the application '%s'\n" \
        "$pids" "$(wc -l <<< "$pids")" "$proc"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...