Как определить PID моей программы на Python, если запущено более одной программы на Python?

3079
user3346931

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

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

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

2
У меня пока нет права голоса. user3346931 9 лет назад 0

1 ответ на вопрос

3
Karsten S.

Вы можете сопоставить список аргументов, используя -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 '' 

Это будет

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

Похожие вопросы