Как перезапустить GNOME Shell из командной строки?

Я хотел бы реализовать сочетание клавиш для перезапуска gnome-shell при каждом его сбое ( некоторые ошибки в настоящее время еще не исправлены). Для этого мне понадобится командная строка для перезапуска оболочки.

Команда Alt + F2 и restart не будет работать при сбое оболочки, поскольку приглашение реализовано в оболочки.

Следовательно, как перезапустить gnome-shell из командной строки?

52
задан 10 October 2017 в 18:59

7 ответов

Самый простой способ - Alt + F2 и набрать r, затем .

0
ответ дан 10 October 2017 в 18:59

Команда должна быть просто gnome-shell --replace.

0
ответ дан 10 October 2017 в 18:59

В случае, если целое gnome-shell было заморожено существует путь, как перезапустить его от терминала, не перезапуская целое X-окно:

  • Ctrl + Высокий звук + F2 для переключения на терминал
  • входит в систему с учетными данными (имя пользователя и пароль) и затем работает:
  • DISPLAY=:0 gnome-shell -r &
  • выходят из системы exit и
  • Высокий звук + F1 для переключения назад на графический интерфейс X Window.
4
ответ дан 10 October 2017 в 18:59

Я придумал эту функцию, чтобы выйти из системы пользователи (см. внизу),

Это принимает

  • у Вас есть 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
}
1
ответ дан 10 October 2017 в 18:59

Вы также можете сделать killall -3 gnome-shell.

0
ответ дан 10 October 2017 в 18:59

Команда для замены оболочки гнома будет gnome-shell --replace.

Со страницы руководства gnome-shell:

--replace             Replace the running window manager
0
ответ дан 10 October 2017 в 18:59

Я определил псевдоним: alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print \$3}"|grep ":"|head -1)| at now'

Вы можете запустить терминал, щелкнув правой кнопкой мыши по фону и введя его там (тогда alt-tab тоже dysfct), если нет , войдите в систему с помощью, например, Ctrl-Alt-F2 и бежать оттуда.

0
ответ дан 10 October 2017 в 18:59

Другие вопросы по тегам:

Похожие вопросы: