Por alguma razão, acabo com alguns processos do Google Chrome Helper que param de responder, consumindo recursos da CPU. Normalmente eu apenas executo o killall Google\ Chrome\ Helper
, mas isso mata tudo, incluindo os processos responsivos, o que significa que preciso reiniciar o Chrome.
Existe um sinalizador para killall
que isso afete apenas processos que não respondem?
Responder1
Uma maneira de fazer isso é encontrar top
o pid do processo que usa mais CPU. Eu comecei um bash CPU em um terminal:
bash -c "while true; do :; done"
Então, em outro terminal, posso matá-lo da seguinte maneira:
kill $( top -l2 | grep bash | sort -nrk3 | awk '{print $1;exit}' )
Observe que, como isso éosx, este é o BSD top
e não a versão GNU.
-l2
diz ao top para executar 2 iterações - a primeira precisa ser ignorada, pois apenas informa 0% da CPU para todos os processos.- Os
grep
filtros apenas as linhas do bash. Observe que isso pode precisar de mais trabalho se sua expressão grep corresponder a qualquer outra parte datop
saída. sort
classifica a saída numericamente ao contrário pela 3ª coluna (CPU%)head
obtém a primeira linha (CPU mais alta)cut
obtém a primeira coluna (PID)- O procedimento acima é executado em uma
$()
substituição de comando, e o PID numérico é passado diretamente parakill
Em máquinas GNU/Linux o equivalente é:
kill $(top -bn1 | grep bash | sort -nrk9 | awk '{print $1;exit}')