Tengo dos programas de Python ejecutándose en mi sistema, digamos que se llaman programa x
y programa y
.
Quiero obtener el pid del programa y
, pero no x
de mi script bash. Cuando lo uso pgrep python
, obtengo el pid de ambos y no sé cuál es cuál.
¿Alguna idea de cómo puedo diferenciar entre los dos en un script bash?
Respuesta1
Puede hacer coincidir la lista de argumentos usando el -f
interruptor para pgrep
(intente man pgrep
leer más).
pgrep -f x
debería producir sólo programa x
y
pgrep -f y
respectivamente único programa y
.
Como alternativa, si x
y y
no son lo suficientemente únicos y terminan en demasiadas filas, puedes usar ps
y grep
para tener más opciones.
ps ax | grep 'python x' | grep -v grep | awk '{print $1}'
Esta voluntad
- enumerar todos los procesos relevantes
- grep para los que están
python x
en él. Aquí es posible que necesites agregar un especificador de ruta comopython ./path/to/x
- eliminar el comando grep de la lista de procesos coincidentes
- Imprime solo la primera columna, que es el pid.