¿Cómo reiniciar GNOME Shell desde la línea de comandos?

51

Me gustaría implementar un atajo de teclado para reiniciar gnome-shell cada vez que este falla ( algunos errores aún no están solucionados). Para esto necesitaría una línea de comando para reiniciar el shell.

El comando Alt+ F2y restartno funcionarán cuando el shell se bloquee porque el indicador se implementa en el shell.

Por lo tanto, ¿cómo reiniciar gnome-shell desde la línea de comandos?

Benjamín
fuente
NOTA: Alt + F2 y restartdetendrá todos los programas en ejecución. (Todavía no sé cómo reiniciar la GUI sin detener los programas).
Andriy Makukha

Respuestas:

48

El comando para reemplazar el gnome-shell sería gnome-shell --replace.

De la página del manual de gnome-shell:

--replace             Replace the running window manager
jokerdino
fuente
2
Gracias no estaba seguro --replace= "reiniciar".
Benjamin
44
A partir de GNOME Shell 3.30.1 en Ubuntu 18.10, esta solución ya no funciona y pateará al usuario a la pantalla de inicio de sesión, perdiendo todo su trabajo. La solución correcta ahora es la línea de comandos: "killall -3 gnome-shell", o ALT + f2 y r (si es posible).
C.Rogers
1
ALT+f2(mostrar símbolo del sistema) + gnome-shell --replacefuncionará bien en 18.04. Todos los programas en ejecución no se detendrán.
lifeisfoo
Agrego el signo y al final del comando para poner el proceso en segundo plano para poder cerrar la terminal sin matar a gnome-shell:gnome-shell --replace &
Teddy
ADVERTENCIA: gnome-shell --replaceen mi máquina Ubuntu 19.10, la mayoría de las aplicaciones en ejecución se cerraron y gnome-shell entró en un estado de problema con una pantalla en blanco y un mensaje para reiniciar la computadora.
Sparr
31

La forma más fácil es hacer Alt+ F2y escribir rentonces .

agustibr
fuente
55
Eso es cierto, pero exactamente no es la pregunta. La pregunta entonces es: qué sucede cuando haces esto. Para que pueda hacerlo usted mismo
sehe
44
A partir de GNOME Shell 3.30.1 en Ubuntu 18.10, y la línea de comandos: "killall -3 gnome-shell" son las únicas soluciones publicadas aquí que funcionan. Todos los demás expulsan al usuario a la pantalla de inicio de sesión, perdiendo todo su trabajo.
C.Rogers
1
Intenté esto en Debian Buster. Aparece el error "Reiniciar no está disponible en wayland".
Livinston
27

También puedes hacer un killall -3 gnome-shell.

Denis
fuente
2
No sé por qué la gente sigue recomendando este comando. Todo lo que hace es matar a gnome-shell. ¿Cómo has respondido a la pregunta de reiniciarlo?
smac89
1
Probablemente porque esta es una buena solución donde el otro comando no funciona. Probé ambos, el elegido es bueno pero no resolvió mi problema, mientras que esto sí.
Mitro
2
A partir de Ubuntu 18.10, GNOME Shell 3.30.1: ESTA ES LA SOLUCIÓN CORRECTA. Todas las demás soluciones reinician la sesión y expulsan al usuario a la pantalla de inicio de sesión, perdiendo todo su trabajo.
C.Rogers
3
SIGQUIT (3) no mata el proceso
Jack Wasey
Esto pareció funcionar para mí. Mientras que estaba usando gnome-shell --replace &antes. Funcionó pero siguió funcionando en la terminal. El problema que tenía era que los videos de Youtube en pantalla completa de alguna manera causaban que Dash-to-Dock y el panel se congelaran. github.com/micheleg/dash-to-dock/issues/…
Natetronn
5

El comando solo debería ser gnome-shell --replace.

Christopher Kyle Horton
fuente
3
A partir de GNOME Shell 3.30.1 en Ubuntu 18.10, esta solución ya no funciona y pateará al usuario a la pantalla de inicio de sesión, perdiendo todo su trabajo. La solución correcta ahora es la línea de comandos: "killall -3 gnome-shell", o ALT + f2 y r (si es posible).
C.Rogers
no funciona para una sesión remota, por lo que cuando gnome shell se ha congelado, esto no funciona.
Jack Wasey
5

En caso de que todo gnome-shellse congele, hay una manera de reiniciarlo desde la terminal sin reiniciar toda la ventana X:

  • Ctrl+ Alt+ F2para cambiar a terminal
  • inicie sesión con sus credenciales (nombre de usuario y contraseña) y luego ejecute:
  • DISPLAY=:0 gnome-shell -r &
  • cerrar sesión exity
  • Alt+ F1para volver a la interfaz gráfica X Window.
ino
fuente
1

Se me ocurrió esta función para cerrar la sesión de los usuarios (ver al final)

Asume

  • tienes permisos de sudo
  • tienes bash
  • los usuarios tienen 1 sesión X en ejecución (aunque debería poder emitir el mismo comando de cierre de sesión varias veces para deshacerse de las sesiones restantes)

Puedes darle múltiples nombres de usuario:

logout john jane mike elisa

Y puedes darle opciones adicionales:

logout john --force

Entonces, tengo la siguiente función auxiliar:

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

Notas:

  • Este es un instrumento contundente y funciona simplemente copiando todo el entorno de sesión. Esto podría ser más selectivo.
  • A veces, cerrar sesión parece demorar
  • En raras ocasiones, la sesión se sigue informando hasta que alguien visita el vt donde se ejecutó la sesión, pero ya no hay nada)

CÓDIGO

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
}
sehe
fuente
1

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

Puede iniciar un terminal haciendo clic derecho con el mouse en el fondo y escribiendo allí (alt-tab también es defectuoso), si no, inicie sesión en un tty con, por ejemplo, ctrl-alt-F2 y ejecute desde allí.

MoreIT
fuente