По какой-то причине у меня в итоге оказывается несколько процессов Google Chrome Helper, которые перестают отвечать, пожирая ресурсы процессора. Обычно я просто запускаю killall Google\ Chrome\ Helper
, однако это убивает все, включая отвечающие процессы, что означает, что мне приходится перезапускать Chrome.
Есть ли флаг, который killall
влияет только на неотвечающие процессы?
решение1
Один из способов сделать это — использовать top
pid процесса, использующего больше всего CPU. Я запустил bash CPU hog в одном терминале:
bash -c "while true; do :; done"
Затем в другом терминале я могу убить его следующим образом:
kill $( top -l2 | grep bash | sort -nrk3 | awk '{print $1;exit}' )
Обратите внимание, поскольку этоosx, это top
версия BSD, а не GNU.
-l2
сообщает top о необходимости выполнения 2 итераций — первую нужно игнорировать, поскольку она просто сообщает о 0% загрузки ЦП для всех процессов.- Фильтрует
grep
только строки bash. Обратите внимание, что это может потребовать больше работы, если ваше выражение grep совпадает с любыми другими частями выводаtop
. sort
сортирует вывод в обратном порядке по третьему столбцу (% ЦП)head
получает первую строку (самый высокий ЦП)cut
получает первый столбец (PID)- Вышеприведенное выполняется в
$()
подстановке команды, а числовой PID просто передается напрямуюkill
На машинах GNU/Linux эквивалент выглядит так:
kill $(top -bn1 | grep bash | sort -nrk9 | awk '{print $1;exit}')