Как перезапустить GNOME Shell из командной строки?
Я хотел бы реализовать сочетание клавиш для перезапуска gnome-shell при каждом сбое ( некоторые ошибки в настоящее время еще не исправлены). Для этого мне понадобится командная строка для перезапуска оболочки.
Alt+F2 и restart
Команда не будет работать при сбое оболочки, поскольку подсказка реализована в оболочке.
Следовательно, как перезапустить gnome-shell из командной строки?
10 ответов
Команда для замены оболочки gnome будет gnome-shell --replace
,
Со страницы руководства gnome-shell
:
--replace Replace the running window manager
Если весь gnome-shell
замерзли есть способ как перезапустить его с терминала без перезапуска всего окна X:
- Ctrl+Alt+F2 для переключения на терминал
- войдите в систему с вашими учетными данными (имя пользователя и пароль) и затем выполните:
DISPLAY=:0 gnome-shell -r &
- выйти
exit
а также - Alt+F1, чтобы вернуться к графическому интерфейсу X Window.
Gnome 40 эквивалентен
Alt+F2 restart
является:
busctl --user call org.gnome.Shell /org/gnome/Shell org.gnome.Shell Eval s 'Meta.restart("Restarting…")'
Сам получил этот совет от https://www.linuxuprising.com/2020/07/how-to-restart-gnome-shell-from-command.html .
Отправка сигнала TERM в Gnome Shell 42.1 работает для меня в Ubuntu 22.04:
pkill -TERM gnome-shell
Примечание. TERM — это сигнал по умолчанию для pkill.
Чтобы правильно перезапустить все связанные, я предпочитаю перезапуск всего стека (если работает tty1..4)
sudo killall -9 gdm
sudo killall -9 gdm3
sudo killall -9 lightdm
Я определил псевдоним:alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print \$3}"|grep ":"|head -1)| at now'
Вы можете запустить терминал, щелкнув правой кнопкой мыши по фону и введя его (alt-tab тоже dysfct), если нет, войдите в tty с помощью, например, ctrl-alt-F2 и запустите его оттуда.
Я придумал эту функцию для выхода из системы пользователей (см. Внизу)
Предполагает
- у вас есть права sudo
- у тебя есть удар
- у пользователей есть 1 запущенный сеанс X (хотя вы должны иметь возможность выполнить одну и ту же команду выхода из системы несколько раз, чтобы избавиться от оставшихся сеансов)
Вы можете дать ему несколько имен пользователей:
logout john jane mike elisa
И вы можете дать ему дополнительные опции:
logout john --force
Итак, у меня есть следующая вспомогательная функция:
function forcelogout() {
logout "$@" --no-prompt --force
}
Заметки:
- Это тупой инструмент, и он работает, просто копируя всю среду сеанса. Это может быть более избирательным.
- Иногда выход из системы занимает некоторое время
- В редких случаях о сеансе сообщают до тех пор, пока кто-нибудь не посетит vt, где сеанс был запущен, но больше ничего нет
КОД
function logout() {
local USERNAME
export USERNAMES=( )
while [ -n "$1" ]; do case "$1" in
-* ) break ;;
*) USERNAMES+=( "$1" ); shift ;;
esac; done
for USERNAME in "${USERNAMES[@]}"; do
local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
if [ -n "$SESSION_PID" ]; then
(
sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
echo "gnome-session-quit --logout $@"
) | sudo -u "$USERNAME" sh -;
fi
done
}