Есть ли способ перезапустить оболочку GNOME, кроме как с помощью Alt + F2 , R + Введите ?
Что касается вопроса, я рассмотрел Различие между `gnome-shell --replace` и r в Alt + F2 , но я не получил то, что искал.
Я ищу команду, которая точно выполняет то же самое, что и Alt + F2 , r + Enter .
Обратите внимание, что я не хочу выполнять команду gnome-shell - replace
...
Я проверил обе вещи Alt + F2 , r Введите и gnome-shell --replace
...
Я обнаружил, что есть большая разница ...
Команда для этого (Протестировано только в Ubuntu 20.04)
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval 'Meta.restart(_("Restarting…"))'
Я также хотел программно перезапустить оболочку gnome, потому что похоже, в Ubuntu 19.10 есть какая-то утечка памяти. gnome-shell
начинает потреблять чуть более 200 МБ, но после нескольких часов использования может достигать более 900 МБ.
alt+f2,r,enter
изящно решает проблему.Появляется небольшое сообщение о перезапуске. Изменение практически незаметно, все окна сохраняют свое положение, а работающие программы сохраняют свое состояние. При перезагрузке мерцает только фон рабочего стола.
При использовании gnome-shell --replace
некоторые программы уничтожаются с потерей всей работы в них, уцелевшие окна могут менять свое положение, а некоторые части экрана кажутся перерисованными. Я также пробовал killall gnome-shell
с аналогичными результатами.
К сожалению, я не думаю, что есть способ получить доступ к этой функции из командной строки, поскольку она встроена глубоко в код gnome-shell для RunDialog GObject:
this._internalCommands = {
'lg': () => Main.createLookingGlass().open(),
'r': this._restart.bind(this),
...
Как Диего Ф. Родригес В. упомянул, нет никакого способа получить к нему доступ с терминала. Тем не менее,
killall -3 gnome-shell
очень близко и поддерживает ваш активный сеанс в такт. Он отправляет сигнал QUIT (SIGQUIT), и, поскольку gnome-shell настроен на автоматический запуск всякий раз, когда X активен, технически он делает то же самое.
kill -SIGQUIT PID
kill -3 PID
kill -QUIT PID
тоже можно сделать, но для этого требуется PID (идентификатор процесса) в качестве аргумента, который можно найти через
ps x | grep "gnome-shell"