Пример использования:
Я запускаю Chromium с несколькими открытыми вкладками и решаю, что мне не нужно получать доступ к приложению в течение следующих 20 минут. Чтобы сэкономить время работы ноутбука, я бы хотел перевести Chrome в режим гибернации (заморозить), не закрывая приложение (повторное открытие и повторная загрузка всех вкладок требует времени, которое я хотел бы сэкономить, переведя его в спящий режим).
killall
решение действительно очень элегантным. :)Ответы:
Вы можете использовать
killall
команду, чтобы отправитьSIGSTOP
сигнал всем процессам, соответствующим заданному имени, чтобы заморозить их, а затем отправитьSIGCONT
тот же способ, чтобы разморозить их снова.Сначала узнайте имя процесса, используя
pgrep -l SEARCH_PATTERN
:Обратите внимание, что он обрезает длинные имена, поэтому
r
отсутствует. Но это не проблема, так как вы можете использовать Tabзавершение, чтобы ввести имя процесса, которое завершит его автоматически.Затем вы отправляете
SIGSTOP
сигнал всем процессам, названнымchromium-browser
так:Окно Chromium будет серым, как если бы оно перестало отвечать на запросы. Ну, это действительно стало безразличным, так что этого следовало ожидать. Теперь вы не можете взаимодействовать с окном (кроме строки меню, свертывания и т. Д., Которые обрабатываются диспетчером окон, а не самим приложением). Но события от нажатия кнопок и т. Д. По-прежнему генерируются и добавляются в очередь событий приложения, поэтому все они будут обрабатываться сразу, когда вы снова разморозите приложение!
Вы снова размораживаете приложение, просто запустив эту команду, которая отправляет
SIGCONT
сигнал указанным процессам:Иногда замораживание приложения таким способом может привести к его аварийному завершению, поэтому перед замораживанием приложения сохраняйте важные данные.
В редких случаях даже среда рабочего стола / менеджер окон / все остальное также может перестать отвечать. В этом случае вы должны разморозить замороженное приложение через TTY:
Нажмите Ctrl+ Alt+, F1чтобы переключиться на TTY1. Вам будет предложено войти в систему, поэтому введите свое имя пользователя и пароль. Затем выполните команду, чтобы разморозить приложение так же, как вы запускаете его через обычный эмулятор терминала. После этого переключитесь обратно на рабочий стол (TTY7) с помощью Ctrl+ Alt+, F7и у вас все будет хорошо.
источник
pgrep
, вы могли бы продолжить сpkill
SIGSTOP
существует, я бы сказал, что он незначительный. Я часто использовал его на Chromium, и я не помню, чтобы это когда-либо было причиной аварии.killall
! ;-)Чтобы приостановить, попробуйте:
killall -SIGTSTP chromium-browser
Если это не сработает, попробуйте силовую версию:
killall -SIGSTOP chromium-browser
.В любом случае, продолжать использовать
killall -SIGCONT chromium-browser
. Я попробовал с Firefox, и это сработало. Учтите, однако, что если вы нажмете кнопки в Chromium, пока он приостановлен, он выполнит эту функцию, как только вы продолжите ее выполнение.источник
chromium-browser
как имя процесса. +1google-chrome
если вы используете Google Chrome, так как разница, по-видимому, сбивает с толкуВы можете попробовать следующее (в Терминале):
Тогда вы увидите что-то вроде этого:
Запишите номер 7166 (или любой другой номер) и затем выполните:
Это приостановит выполнение процесса. Он не сразу освобождает используемую им память, но память будет доступна другим процессам, если им это понадобится.
Тогда делай
kill -CONT 7166
снова работать с программой.Обратите внимание, что вы должны изменить 7166, где это необходимо.
источник