Como reiniciar o GNOME Shell a partir da linha de comando?

29

Eu gostaria de implementar um atalho de teclado para reiniciar o gnome-shell sempre que este falha ( alguns bugs ainda não estão corrigidos no momento). Para isso eu precisaria de uma linha de comando para reiniciar o shell.

O comando Alt + F2 e restart não funciona quando o shell está travado porque o prompt é implementado no shell .

Portanto, como reiniciar o gnome-shell a partir da linha de comando?

    
por Benjamin 31.01.2012 / 16:19

6 respostas

30

O comando para substituir o shell do gnome seria gnome-shell --replace .

Na página de manual de gnome-shell :

--replace             Replace the running window manager
    
por jokerdino 31.01.2012 / 16:27
18

A maneira mais fácil é Alt + F2 e digite r e então .

    
por agustibr 28.10.2013 / 12:41
5

O comando deve ser apenas gnome-shell --replace .

    
por Christopher Kyle Horton 31.01.2012 / 16:26
5

Você também pode fazer um killall -3 gnome-shell .

    
por Denis 19.08.2016 / 22:11
1

Eu criei essa função para fazer logout de usuários (veja na parte inferior)

Assume

  • você tem permissões sudo
  • você tem bash
  • os usuários têm 1 sessão X em execução (embora você deva poder emitir o mesmo comando de logout várias vezes para se livrar das sessões restantes)

Você pode fornecer vários nomes de usuário:

logout john jane mike elisa

E você pode dar opções adicionais:

logout john --force

Então, eu tenho a seguinte função auxiliar:

function forcelogout() {
    logout "$@" --no-prompt --force
}

Notas:

  • Este é um instrumento contundente e funciona apenas copiando todo o ambiente da sessão. Isso poderia ser mais seletivo.
  • Às vezes, o logout parece demorar um pouco
  • Em raras ocasiões, a sessão continua sendo relatada até que alguém visite o vt onde a sessão foi executada, mas nada está mais lá

CÓDIGO

function logout() {
    local USERNAME
    export USERNAMES=( ) 
    while [ -n "" ]; do case "" in
        -* ) break ;;
        *) USERNAMES+=( "" ); 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
}
    
por sehe 21.01.2017 / 13:24
1

Eu defini um alias: alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print $3}"|grep ":"|head -1)| at now'

Você pode ser capaz de iniciar um terminal clicando com o mouse no plano de fundo e digitar lá (a tabulação-alt também é disfct), se não, faça login em um tty com, por exemplo, ctrl-alt-F2 e execute a partir daí.

    
por MoreIT 04.10.2017 / 16:40