У меня в системе запущены две программы Python, скажем, они называются program x
и program y
.
Я хочу получить pid программы y
, но не x
моего скрипта bash. При использовании pgrep python
я получаю pid обоих и не знаю, какой из них какой.
Есть идеи, как отличить эти два варианта в скрипте bash?
решение1
Вы можете сопоставить список аргументов, используя переключатель -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.