Eu tenho dois programas python em execução no meu sistema, digamos que eles são chamados program x
e program y
.
Quero obter o pid de program y
, mas não x
para meu script bash. Ao usar pgrep python
, recebo o pid de ambos e não sei qual é qual.
Alguma idéia de como posso saber a diferença entre os dois em um script bash?
Responder1
Você pode comparar com a lista de argumentos usando a -f
opção para pgrep
(tente man pgrep
ler mais).
pgrep -f x
deve render apenas programa x
e
pgrep -f y
respectivamente apenas programa y
.
Como alternativa, se x
e y
não forem exclusivos o suficiente e terminarem em muitas linhas, você poderá usar ps
e grep
para ter mais opções
ps ax | grep 'python x' | grep -v grep | awk '{print $1}'
Isso vai
- liste todos os processos relevantes
- grep para aqueles que estão
python x
nele. Aqui você pode precisar adicionar um especificador de caminho comopython ./path/to/x
- remova o próprio comando grep da lista de processos correspondentes
- imprima apenas a primeira coluna, que é o pid.