
Есть ли способ выйти google-chrome
из терминала, помимо использования killall google-chrome
?
Я хотел бы иметь возможность закрыть его из скрипта, не убивая его.
решение1
Эта команда корректно завершает работу дерева процессов Chrome во всех оконных менеджерах:
pkill --oldest chrome
или, если вы предпочитаете:
/usr/bin/pkill --oldest --signal TERM -f chrome
Подробности:
- изящно означает: не видеть сообщение «Google Chrome не был завершен корректно. Чтобы перезагрузить ...» при следующем запуске Chrome
- браузер Chrome (например, версии 39.0.2171.95) ловит и изящно обрабатывает
SIGTERM
- сигнализируют об одном процессе, корне дерева процессов Chrome, следовательно
--oldest
SIGTERM
то же самое, что и сигнал15
, следовательно--signal TERM
, или просто оставьте его, так какSIGTERM
это сигнал по умолчаниюwmctrl
работает с Unity и некоторыми другими, но не со всеми оконными менеджерамиwmctrl -c
закрывает одно окно за раз, поэтому, чтобы закрыть все окна Chrome, вам понадобится что-то вродеwhile wmctrl -c 'Google Chrome'; do sleep 0.2; done
решение2
Возможноwmctrl
может быть полезным. Вы можете использовать -c
опцию, которая изящно закрывает окно:
wmctrl -c chrome
Строка chrome
сопоставляется с заголовками окон. Обратите внимание, что окно может не закрыться, если всплывает какое-либо сообщение (например, если открыто несколько вкладок).
решение3
Мне это подходит:
killall --quiet --signal 15 -- chrome
Обратите внимание, что я использую довольно многословную команду, чтобы она оставалась читаемой в коде. Конечно, вы также можете ввести:
killall -q -15 chrome
решение4
пытаться:
kill -3 <pid_of_chrome>
Это отправит Chrome сигнал «ВЫХОД», который, в зависимости от вашего оконного менеджера, будет соответствовать тому, который он обычно отправляет при запросе на закрытие.