Matando todos os scripts python, exceto o processo grep e um script python específico

1

Como posso executar o comando no bash para matar todos os scripts python, exceto o script chamado test.py e o pid de grep , caso estejamos usando algo como ps -ef |grep

Eu acho que posso usar algo como o pgrep python para ignorar o processo do grep, mas como eu também excluo o script test.py? Eu sei que existe uma opção para fazer grep -v , existe opção para fazer pgrep -v

Esclarecimento : exceto grep process- significa que quando fazemos por exemplo ps -ef |grep test1.py , obtemos também o grep pid que costumava trazer este resultado. Eu não quero matá-lo, pois esse processo não existe mais no estágio em que os resultados são exibidos.

    
por user12345 15.09.2016 / 17:13

1 resposta

0

Você poderia usar algo ao longo destas linhas:

pkill $(pgrep python | grep -xv $(pgrep test.py))

Trabalhando de dentro para fora, isso:

  1. reúne o PID para test.py com pgrep test.py
  2. envia esse PID para grep -xv , que será excluído ( -v ; a opção -x diz para corresponder à linha inteira (PID)) da lista reunida por:
  3. pgrep python para reunir a lista de scripts python que você quer matar

Você pode precisar ajustar os pgrep para encontrar exatamente os processos python que deseja, mas essa é a estrutura básica. Ajuste-o à sua situação trabalhando de novo de dentro para fora:

  1. execute pgrep test.py para garantir que ele encontre exatamente o PID que você está esperando. Procure na opção pgrep -f para corresponder ao nome completo do processo para ter mais certeza.

  2. execute pgrep python (ou similar) para localizar os "scripts python" que você deseja eliminar.

  3. junte tudo!

por 15.09.2016 / 20:50