В этой статье объясняется, как перезапустить оболочку GNOME из командной строки, не закрывая никаких приложений (только X11).
Оболочка GNOME может быть перезапущена без закрытия всех приложений только на X11 (используется по умолчанию на Ubuntu, например); под Wayland (что, например, использует Fedora по умолчанию) оболочка GNOME является дисплейным сервером, и если дисплейный сервер выходит из строя, все запущенные приложения также выходят из строя, так что это не работает. Если вы используете это в Wayland, сеанс перезапускается, закрывая все запущенные приложения.
Мы предполагаем, что вы уже знаете, что пока оболочка GNOME работает (она не зависла), вы можете перезапустить ее и сохранить все запущенные приложения, нажав Alt + F2, затем введите r и нажмите клавишу Enter.
Но что делать, если вы хотите перезапустить оболочку GNOME из командной строки, не закрывая все приложения? Это может быть полезно в скрипте или прикрепить команду к сочетанию клавиш, чтобы вы могли перезапустить оболочку GNOME в случае, если она зависнет/перестанет отвечать на запросы и т. д.
Эквивалент нажатия Alt + F2 и последующего ввода в командной строке r выглядит следующим образом (Таким образом, эта команда перезапускает оболочку GNOME, не закрывая никаких запущенных приложений):
busctl --user call org.gnome.Shell /org/gnome/Shell org.gnome.Shell Eval s 'Meta.restart("Restarting…")'
Это одна команда-трижды щелкните строку, чтобы выбрать ее.
Поскольку это то, что оболочка GNOME делает при запуске Alt + F2 и вводе текста, это лучший способ перезапуска оболочки GNOME из командной строки.
В случае, если это не работает по какой-то причине, другой командой, которая должна перезапустить оболочку GNOME, является:
killall -HUP gnome-shell
Это позволяет сохранить некоторые запущенные приложения, но другие закрыты. Кроме того, если вы продолжите работать с этим, GNOME Shell может обнаружить, что что-то пошло не так, и отключить все ваши расширения, выйдя из системы в этом процессе. Так что эта команда не идеальна, поэтому мы не рекомендуем использовать ее, если вы действительно не должны этого делать.
Так что же делает этот сигнал HUP? Это сообщение отправляется программе, чтобы запросить ее перезагрузку и перечитывание конфигурации.
Еще один способ перезапуска оболочки GNOME, который работает только с оболочкой GNOME 3.28 и старше, заключается в запуске gnome-shell —replace. Это больше не работает должным образом с GNOME Shell 3.30 и новее — если вы попытаетесь в таком случае, это приведет к сбою GNOME Shell, заставляя вас выйти из системы.