es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe un comando o una forma programática que pueda utilizar para extraer identificadores de proceso (PIDs) y colocarlos en una lista separada por espacios?

Geeks, busco su ayuda.

En mi script de Bash necesito matar un proceso y todos sus hijos, por lo que, dado el PID del padre (2288 en este caso), necesito usar ese PID para encontrar los PID de los hijos, ponerlos en una lista y luego matarlos. He intentado el código a continuación…

pstree -p | grep 2288

… pero su salida tiene PID hijos incrustados dentro de caracteres alfabéticos, como se puede ver a continuación…

S90service(2288)—-bash(2290)—-php(2291)

¿Hay un comando o una forma programática que pueda usar para extraer PID y ponerlos en una lista separada por espacios?

Tenga en cuenta que en la actualidad estoy utilizando…

(1)

pgrep -d’ ‘ -f partial-name-of-process

… para poner los PID del padre y sus hijos en una lista separada por espacios y luego matarlos. Quiero abandonar esto debido a la posibilidad real de matar accidentalmente otros procesos cuyos nombres puedan coincidir con partial-name-of-process, y,

(2)

He intentado varias técnicas sugeridas, como expresiones regulares con awk ‘printf $1’, etc., para extraer PID de la salida de pstree o ps, pero la mayoría de estas sugerencias solo funcionan en la línea de comandos y fallan cuando se ponen a trabajar dentro de un script.

Estaré muy agradecido si algún geek puede ayudar con una técnica simple para extraer los PID de los hijos para un PID padre dado y ponerlos en una lista separada por espacios.

(Mis scripts están en Bash, en Centos)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Estimados Geeks,

    Solicito de su experiencia para extraer PIDs secundarios de un PID padre dado y colocarlos en una lista separada por espacios en un script bash.

    En la actualidad, estoy usando el código pstree -p | grep 2288 para encontrar PIDs secundarios de un PID padre dado. Sin embargo, la salida contiene PIDs secundarios incrustados dentro de caracteres alfabéticos, lo cual no es útil para mi propósito.

    He intentado varias técnicas, como expresiones regex con awk printf $1, pero fallan al usarlas dentro de un script. Actualmente uso pgrep -d’ ‘ -f nombre-parcial-del-proceso para colocar los PIDs del padre y sus secundarios en una lista separada por espacios y, luego, matarlos. Sin embargo, este enfoque conlleva un riesgo de matar accidentalmente otros procesos cuyos nombres coinciden con el nombre parcial del proceso.

    ¿Cómo puedo extraer programáticamente PIDs de la salida de pstree o ps y colocarlos en una lista separada por espacios? Agradecería mucho cualquier ayuda de un geek.

    Tengan en cuenta que mis scripts están en bash, en Centos.

Comments are closed.