Cómo matar todos los procesos de Python excepto uno de bash

11

¿Cómo puedo matar desde bash todos los procesos de Python, excepto un script de Python? (Sé su nombre, pero su pid se puede cambiar a veces).

Necesito un poco, pkill -f "python"pero excluyendo el script específico de Python.

Por favor avise.

usuario370717
fuente

Respuestas:

13

ps aux |grep python |grep -v 'pattern_of_process_you_dont_want_to_kill' |awk '{print $2}' |xargs kill

Actualización: explicación paso a paso según lo solicitado en los comentarios

  • ps aux |grep python- muestra todos los procesos que coinciden con el pythonpatrón
  • grep -v 'pattern_of_process_you_dont_want_to_kill' - excluye el proceso que no quieres matar
  • awk '{print $2}' - muestra el segundo campo de salida, es PID.
  • xargs kill- Aplicar killcomando a cada entrada arg (PID).

Si no está familiarizado con el xargscomando, le aconsejo que no se preocupe si no lo comprende de inmediato. Podría parecer bastante complicado por primera vez. Publiqué un ejemplo muy simple de su uso, puede buscar en Google para obtener más información.

usuario1700494
fuente
1
Genial, pero ¿podría explicar cómo funciona? Por ejemplo, ¿qué es awk '{print $ 2}' y xargs kill?
user370717
awk '{print $2}' - imprime el segundo campo de pssalida, en el caso actual lo es PID. xargsaplica el killcomando a cada unoPID
user1700494
1
Poner eso en un comentario es bueno, pero prefiero votar por tu respuesta después de que ese comentario bien formateado se integró en tu respuesta.
pollitos