Usando 'pgrep' para emular 'ps -ef' para uso em um loop 'for i in'

0

Ubuntu 16.04

Estou acostumado a usar esta linha de comando para matar qualquer processo correspondente ao comando COMMAND

for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done

o shellcheck não gosta muito disso e sugere

root@singa /home # shellcheck run

In run line 4:
for i in $(ps -ef | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done
           ^-- SC2009: Consider using pgrep instead of grepping ps output.

quais são os sinalizadores necessários para concluir isso aqui substituindo o XXX

for i in $(pgrep XXX | grep COMMAND | awk '{ print $2 }'); do kill -9 "$i" &>/dev/null;done

Já verifiquei a página do manual para pgrep.

    
por needtoknow 14.06.2018 / 23:32

2 respostas

1
for pid in $(pgrep command); do
    kill -9 $pid
done

Ou melhor ainda:

pkill -9 command

Como uma observação, o uso desinteressado de kill -9 é conhecido por ser a causa de surtos de zumbis, arquivos órfãos, arquivos temporários permanentes e outras doenças. Por favor, considere apenas usar kill , que por padrão envia SIGTERM em vez de SIGKILL .

    
por 14.06.2018 / 23:40
0

eu fiz abaixo do método

for i in pickup hald-runner; do pgrep $i | awk '{print "kill" " "  $1}'| sh;done

Aqui pickup, hald-runner são os nomes dos processos

    
por 15.06.2018 / 04:25