Eu tenho alguns processos que surgem e eu posso imprimir uma linha do pgid que eu gostaria de inserir em um comando kill.
aqui está o que eu tenho:
sudo ps o pgid,args | grep mininet: | sudo awk '{print -$0}'
retorna algo como
-3834
-3841
-3844
-3846
-3848
-3853
-3856
-3859
-3862
Eu neguei a saída na parte {print -$0}
para que eles também matem os processos filhos.
o comando grep procura por um argumento nos comandos bash que denotam os programas pais
agora, gostaria de ligar para sudo kill -SIGSTOP
, mas vejo aqui link que você não pode usar comandos dentro do awk que não seja condicionais, imprimir, etc. Estou enganado nisso ou existe uma maneira de redirecionar a entrada para o comando kill para parar os processos.
contexto: pausando o emulador de rede mininet. Eu gostaria de fazer isso como um one-liner porque seria legal. Estou meio confuso sobre como a prioridade é dada com |
e como inserir um comando no outro.
Codificação pela filosofia unix Eu não deveria me preocupar com gargalos até mais tarde, mas se alguém achar que essa é uma maneira ruim de fazer isso, eu apreciaria essa informação também.
Obrigado ~
editar:
Este comando pára os processos:
sudo ps o pgid,args | grep mininet: | sudo awk '{system("sudo kill --signal SIGSTOP -"$1)}' -
Em awk
, você pode usar system("program ")
aceitando o conselho de que isso funciona para:
sudo pgrep -f mininet: | sudo awk '{system("sudo kill --signal SIGCONT -"$1)}' -