В версиях до 58, killall chromium-browse[r]
было достаточно, чтобы убить все вкладки, оставив браузер Chrome без изменений. Как это поведение может быть воспроизведено для новой версии браузера?
Лучшее, с чем я справился, это следующее, которое также убирает расширения при выполнении своей работы:
pgrep -f 'chromium-browser --type=renderer' | while read pid; do kill $pid; done
[ 116] Правка для контекста : у меня есть объем памяти, который хром может использовать, ограниченный cgroups. Когда это количество превышено, хром зависает, переставляя память с диска на диск. В этом состоянии Chromium не реагирует на ввод пользователя, поэтому браузер не может использовать вкладки.
Редактировать для наглядности : Уничтожение вкладки не означает ее закрытие. Я хочу, чтобы сама вкладка осталась, а процесс рендеринга умер. На это обычно указывает сообщение «Что-то пошло не так» вместо обычного содержимого вкладки.
Ctrl kbd> + Shift kbd> + w kbd> уничтожит все вкладки в текущем выбранном окне Chrome, не затрагивая сам браузер.
Хорошо поэтому после Ваших редактирований; я играл вокруг с командой, которую Вы дали. Вы сказали, что это уничтожает расширения также так для исключения их, можно сделать grep -v "extension"
, но затем Вы принимаете как вход целое управление процесса.
Так или иначе. Сначала выберите имя процесса
pgrep -f -a 'chrome'
, я использую хром, можно поместить chromium-browser
вместо этого. Эти -a
флаг здесь важен.
затем делают
| grep 'type=renderer'
для получения всех рендереров. Затем сделайте
| grep -v "extension"
для исключения расширений, затем мы должны сделать
| egrep -o '^[0-9]{0,}'
для получения только числа процесса (так как мы должны были использовать эти -a
флаг, который дает дополнительные данные в строке).
Канал, что в Ваш для цикла
| while read pid; do kill $pid; done
И это должно уничтожить рендереры без расширений
Поэтому наконец, вот все это для Вас:
pgrep -f -a 'chromium-browser' | grep 'type=renderer' | grep -v "extension" | egrep -o '^[0-9]{0,}' | while read pid; do kill $pid; done
я надеюсь, что не сделал ошибки