2

У меня в системе работает две программы на python, скажем, они называются программа x и программа y .

Я хочу получить pid программы y , но не x для моего скрипта bash. При использовании pgrep python я получаю pid от них обоих и не знаю, что есть что.

Любые идеи, как я могу сказать разницу между двумя в сценарии Bash?

1 ответ1

3

Вы можете сопоставить список аргументов, используя ключ -f для pgrep (попробуйте man pgrep чтобы узнать больше).

pgrep -f x

должен давать только программу x и

pgrep -f y

соответственно только программа y .

В качестве альтернативы, если x и y недостаточно уникальны и заканчиваются слишком большим количеством строк, вы можете использовать ps и grep чтобы иметь больше опций

ps ax | grep 'python x' | grep -v grep | awk '{print $1}'

Это будет

  • перечислить все соответствующие процессы
  • grep для тех, у кого есть python x Здесь вам может понадобиться добавить спецификатор пути, например, python ./path/to/x
  • удалить саму команду grep из списка совпадающих процессов
  • печатать только первый столбец, который является pid.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .