Por alguna razón, termino con unos cuantos procesos auxiliares de Google Chrome que dejan de responder, acaparando recursos de la CPU. Por lo general, simplemente ejecuto killall Google\ Chrome\ Helper
, sin embargo, esto mata todo, incluidos los procesos de respuesta, lo que significa que tengo que reiniciar Chrome.
¿Existe una marca para killall
que solo afecte a los procesos que no responden?
Respuesta1
Una forma de hacerlo es utilizar top
para encontrar el pid del proceso que utiliza la mayor cantidad de CPU. Comencé un acaparador de CPU bash en una terminal:
bash -c "while true; do :; done"
Luego en otra terminal puedo matarlo de la siguiente manera:
kill $( top -l2 | grep bash | sort -nrk3 | awk '{print $1;exit}' )
Tenga en cuenta que ya que esto esosx, esta es la top
versión BSD y no la GNU.
-l2
le dice a top que se ejecute durante 2 iteraciones; la primera debe ignorarse ya que solo informa 0% de CPU para todos los procesos.- Los
grep
filtros solo las líneas bash. Tenga en cuenta que esto puede necesitar más trabajo si su expresión grep coincide con otras partes de latop
salida. sort
ordena la salida numéricamente a la inversa por la tercera columna (% de CPU)head
obtiene la primera línea (CPU más alta)cut
obtiene la primera columna (PID)- Lo anterior se ejecuta en una
$()
sustitución de comando, y el PID numérico simplemente se pasa directamente akill
En máquinas GNU/Linux el equivalente es:
kill $(top -bn1 | grep bash | sort -nrk9 | awk '{print $1;exit}')