Come riavviare GNOME Shell dalla riga di comando?


51

Vorrei implementare una scorciatoia da tastiera per riavviare gnome-shell ogni volta che si blocca ( alcuni bug non sono corretti al momento). Per questo avrei bisogno di una riga di comando per riavviare la shell.

Il comando Alt+ F2e restartnon funzionerà quando la shell si arresta in modo anomalo perché il prompt è implementato nella shell.

Quindi, come riavviare gnome-shell dalla riga di comando?


NOTA: Alt + F2 e restartinterromperà tutti i programmi in esecuzione. (Non so ancora come riavviare la GUI senza interrompere i programmi.)
Andriy Makukha,

Risposte:


48

Il comando per sostituire la shell gnome sarebbe gnome-shell --replace.

Dalla pagina del manuale di gnome-shell:

--replace             Replace the running window manager

2
Grazie non ero sicuro --replace= "riavvio".
Benjamin,

4
A partire da GNOME Shell 3.30.1 su Ubuntu 18.10, questa soluzione non funziona più e porterà l'utente alla schermata di accesso, perdendo tutto il lavoro. La soluzione corretta è ora la riga di comando: "killall -3 gnome-shell", o ALT + f2 e r (se possibile).
C. Roger

1
ALT+f2(mostra il prompt dei comandi) + gnome-shell --replacefunzionerà bene in 18.04. Tutti i programmi in esecuzione non verranno arrestati.
lifeisfoo,

Aggiungo la e commerciale alla fine del comando per mettere il processo in background in modo da poter chiudere il terminale senza uccidere gnome-shell:gnome-shell --replace &
Teddy

ATTENZIONE: gnome-shell --replacesulla mia macchina Ubuntu 19.10 ha causato la chiusura della maggior parte delle applicazioni in esecuzione e gnome-shell entra in uno stato problematico con uno schermo bianco e un prompt per riavviare il computer.
Sparr

31

Il modo più semplice è Alt+ F2e digitare rquindi .


5
Questo è vero, ma non esattamente la domanda. La domanda allora è: cosa succede quando lo fai. In modo che tu possa farlo da solo
vedi il

4
A partire da GNOME Shell 3.30.1 su Ubuntu 18.10 e dalla riga di comando: "killall -3 gnome-shell" sono le uniche soluzioni pubblicate qui che funzionano. Tutti gli altri espellono l'utente nella schermata di accesso, perdendo tutto il lavoro.
C. Roger

1
Ho provato questo su debian buster. Viene visualizzato l'errore "Riavvio non disponibile sulla rotta".
Livinston,

27

Puoi anche fare un killall -3 gnome-shell.


2
Non so perché le persone continuino a raccomandare questo comando. Tutto ciò che fa è uccidere gnome-shell. Come hai risposto alla domanda di riavviarlo?
smac89,

1
Probabilmente perché questa è una buona soluzione in cui l'altro comando non funziona. Ho provato entrambi, quello scelto è buono ma non ha risolto il mio problema, mentre è stato così.
Mitro,

2
A partire da Ubuntu 18.10, GNOME Shell 3.30.1 - QUESTA È LA SOLUZIONE CORRETTA. Tutte le altre soluzioni riavviano la sessione e espellono l'utente alla schermata di accesso, perdendo tutto il lavoro.
C. Roger

3
SIGQUIT (3) non uccide il processo
Jack Wasey il

Questo sembra funzionare per me. Considerando che stavo usando gnome-shell --replace &prima. Funzionava, ma continuava a funzionare nel terminal. Il problema che stavo riscontrando era che i video di Youtube a schermo intero in qualche modo causavano il blocco di Dash-to-Dock e del pannello. github.com/micheleg/dash-to-dock/issues/…
Natetronn

5

Il comando dovrebbe essere gnome-shell --replace.


3
A partire da GNOME Shell 3.30.1 su Ubuntu 18.10, questa soluzione non funziona più e porterà l'utente alla schermata di accesso, perdendo tutto il lavoro. La soluzione corretta è ora la riga di comando: "killall -3 gnome-shell", o ALT + f2 e r (se possibile).
C. Roger

non funziona per una sessione remota, quindi quando la shell di gnome si è bloccata, questo non funziona.
Jack Wasey,

5

Nel caso il tutto gnome-shellsi blocchi, c'è un modo per riavviarlo dal terminale senza riavviare l'intera finestra X:

  • Ctrl+ Alt+ F2per passare al terminale
  • accedi con le tue credenziali (nome utente e password) ed esegui:
  • DISPLAY=:0 gnome-shell -r &
  • disconnettersi exite
  • Alt+ F1per tornare all'interfaccia grafica X Window.

1

Ho creato questa funzione per disconnettere gli utenti (vedere in fondo)

Presuppone

  • hai i permessi sudo
  • hai bash
  • gli utenti hanno 1 sessione X in esecuzione (anche se dovresti essere in grado di emettere più volte lo stesso comando di logout per eliminare le sessioni rimanenti)

Puoi assegnargli più nomi utente:

logout john jane mike elisa

E puoi dargli ulteriori opzioni:

logout john --force

Quindi, ho la seguente funzione di supporto:

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

Appunti:

  • Questo è uno strumento contundente e funziona semplicemente copiando l'intero ambiente di sessione. Questo potrebbe essere più selettivo.
  • A volte il logout sembra richiedere del tempo
  • In rare occasioni la sessione continua a essere segnalata fino a quando qualcuno non visita il vt dove è stata eseguita la sessione, ma non c'è più nulla)

CODICE

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

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

Potresti essere in grado di avviare un terminale facendo clic con il pulsante destro del mouse sullo sfondo e digitare lì (anche alt-tab è difettoso), in caso contrario, accedi a un tty con ad esempio ctrl-alt-F2 e corri da lì.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.