Jak zrestartować Gnome-shell, gdy przestał reagować / zawiesił się?


123

Czasami moja skorupa gnoma zawiesza się. Widzę (słyszę) działające procesy w tle (odtwarzanie muzyki), ale nie mogę nic zrobić w gnome. Nie Alt+ F2+ R.

Mogę przełączyć się na konsolę, używając: Ctrl+ Alt+ F1, zaloguj się jako ten sam użytkownik i wykonaj:

gnome-shell --replace

i wróć Ctrl+ F7, ale potem mam dziwne zachowanie. Na przykład nie mogę edytować połączeń sieciowych. Nie mogę się również wylogować. Jaki jest właściwy sposób na ponowne uruchomienie powłoki gnome?


Czy powłoka gnome zawiesza się podczas korzystania z funkcji wyszukiwania w gnome-shell overview, lub w jakiej konkretnej sytuacji, jeśli potrafisz powiedzieć?
v2r

1
Nie, zawiesza się po zalogowaniu (głównie), zwykle po oddokowaniu.
jk_

2
Jak dotąd nie znalazłem działającego rozwiązania. W końcu kończy się to obejście .
jk_

Jeśli używasz rozszerzeń powłoki z: extensions.gnome.org, wyłącz je wszystkie i uruchom ponownie, aby sprawdzić, czy któreś z nich spowodowało problem. Używam starszej wersji gnome-shell i miałem wiele problemów z tej właśnie przyczyny! (Może to jest tak proste ?!)
v2r 30.04.2014

1
Próbowałem dezaktywować je wszystkie, nadal mam problem :(
jk_

Odpowiedzi:


173

Łatwiej jest po prostu nacisnąć Alt+ F2, ra następnie wpisać Enter. Działa to tak długo, że powłoka jest użyteczna.

Możesz również wysłać SIGQUITdo gnome-shellprocesu, który zakończy tylko powłokę:

killall -3 gnome-shell

Inne metody używają bardziej niszczycielskich środków, które zamykają wszystkie aplikacje, to nie powinno.


3
+1 za SIGHUPwskazówkę nie byłoby jednak poprawnym poleceniem killall -1 gnome-shell? Przynajmniej zgodnie z man 7 signaltym wartość SIGHUPwynosi 1. Wartość 3 odpowiada SIGQUIT. Wysłałem wartość 1 do Gnome Shell i została ona zrestartowana zgodnie z oczekiwaniami.
Chriki,

@Chiki tak, to był znak, przez większość sygnałów kończy proces gnome-shell.
Braiam

Próbowałem tego na Fedorze 25 i killall -3 gnome-shellzaowocowałem zabiciem wszystkich aplikacji.
comfreak

6
Chciałbym również użyć polecenia terminalu, które ma dokładnie taki sam efekt jak Alt+F2i r, tj. Bez wygaszania całego ekranu ...
Sadi

Natknąłem się na problem awarii gnoma na moim Ubuntu VM, musiałem restartować maszynę wirtualną za każdym razem, gdy to się stało. Dzięki ssh i użyciu tego polecenia rozwiązuje ten problem, dzięki milion.
Nathan F.

32
  • Jeśli chcesz poprosić "ładnie", aby gnome-shell zrestartował się, możesz wywołać jego wewnętrzną funkcję restartu za pośrednictwem dbus za pomocą następującej komendy (zakładając, że DBUS_SESSION_BUS_ADDRESSenv var ustawiono na poprawną wartość i działasz jako ten sam użytkownik):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • Jeśli chcesz uruchomić nową instancję, gnome-shell --replacepowinieneś zrobić dobrze. Na konsoli trzeba określić niezbędne zmienne środowiskowe, takie jak DISPLAY, DBUS*i tak dalej. Odnosić się do/proc/$gnome_shell_pid/environ

  • Jeśli chcesz zrestartować istniejący, killall -HUP gnome-shellzrobi to. Jeśli robisz to zbyt często, gnome-shell może wyłączyć wszystkie rozszerzenia, wymusić wylogowanie lub w inny sposób zachowywać się w sposób nieprzyjazny dla użytkownika.

Stworzyłem funkcję powłoki, który ustawia DBUS_SESSION_BUS_ADDRESS od środowiska procesowego gnome-shell (tak można logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
sehe

3
Wystąpił błąd Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filesbez sudo iz Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11sudo.
Seanny123

7

Oto inne obejście:

  1. Zaloguj się do lokalnego terminalu, naciskając CTRL+ ALT+ F1.
  2. Uruchom polecenie:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. Wróć do interfejsu graficznego, naciskając CTRL+ ALT+ F7.

PS: Używam lightdm zamiast gdm3.


1
Prosty i działa jak urok! (Przynajmniej dla mnie)
Katai

6

Jeśli zainstalowałeś gnome Ubuntu, co powinieneś mieć, być może korzystasz z menedżera wyświetlania gnome. W takim przypadku powinieneś zmienić na inny TTY, na przykład Ctrl + Alt + F4, a następnie

sudo service gdm restart

Niedawno napisałem też artykuł o takiej sytuacji:

Pomoc, mój Linux Linux zawiesza się!

Powodzenia!


6
uważaj , zrobiłem to na tym samym TTY, a to zabiło moją obecną sesję ..
RousseauAlexandre

to kompletnie spieprzyło bieżącą sesję: zaczęło mrugać, a następnie przeszło do nirwany ... musiało się zrestartować.
Nik O'Lai

5

Ponieważ nie jesteś zadowolony z tego gnome-shell --replace, możesz spróbować zrestartować samego menedżera wyświetlania.

sudo service lightdm restart

Myślę, że to zabije inne uruchomione procesy. Zobacz także http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

Jeśli jesteś poważnie zainteresowany czymś, co powoduje, że zamarzasz za każdym razem, włącz SysRq, jak wspomniano w https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst , a następnie daj <alt><sysrq/print_screen_key><k>się zabić, cokolwiek tam jest ekran.


3
Ponowne uruchomienie lighdm działa, ale chcę tego uniknąć, ponieważ muszę ponownie otworzyć wszystko od zera. Zwłaszcza jeśli wiem, że jest to problem powłoki Gnome, a jej ponowne uruchomienie prawie działa.
jk_

Nie jestem świadomy innych metod ograniczania tylko powłoki gnoma. Próbowałeś czy DISPLAY=:7 gnome-shell --replacedziała?
Jay Aurabind,

1
Nie, nie używa, używam wyświetlacza, gdy wpokazy są inne niż : 0 . Jeśli użyję niewłaściwego wyświetlacza, pojawia się błąd.
jk_

Przepraszam, nie mam opcji. Prawdopodobnie powinieneś zapytać na liście mailingowej użytkownika / programisty gnome. Najpierw dowiedz się, dlaczego masz nieprawidłowości alt-f2-rlub gnome-shell --replacekiedy jest to zalecany sposób gnoma.
Jay Aurabind

Ja też. Połączyłem się nawet z tym linkiem, ustawiając więcej zmiennych ENV, ale nadal nie mogę edytować połączeń sieciowych podczas restartowania gnome-shell z innego terminala. W końcu kończę z tą sztuczką
2014

2

Czasami mam ten sam problem, co opisujesz, a moim rozwiązaniem jest:

Ctrl+ Alt+ F1, zaloguj się jako ten sam użytkownik i wykonaj:

sudo pkill -9 ^gnome-shell

I wróć z Ctrl+ Alt+F7

Jeśli to jest właściwy sposób, nie wiem. Dla mnie działa za każdym razem.


3
To zabije wszystkie wystąpienia gnome-shell dla wszystkich użytkowników, co może nie być czymś, co chcesz zrobić w scenariuszu dla wielu użytkowników. Zwykle musisz tylko zabić własnego (pkill -HUP gnome-shell)
Steeve McCauley

3
myślę, że zabicie -9 jest trochę destrukcyjne: robertwe.github.io/2015/03/19/hy-you-shoudnt-use-kill--9
Robert

świetnie, to działa dla mnie ...! ratujesz mój dzień. docenione.
NomanJaved

2

Uruchom ponownie X

  • Najpierw znajdź menedżera wyświetlania używanego przez system Ubuntu za pomocą następującego polecenia:

    cat /etc/X11/default-display-manager
    

    w moim przypadku to /usr/sbin/gdm3

    Od wewnątrz X lub NA ZEWNĄTRZ X

  • W przypadku metod od 1 do 4 sprawdź, z którego wyświetlacza korzystasz, używając wpolecenia.

    w
    

    odpowiedź może być na przykład tty3 (dlatego klawisz „Return to my display” mojego (potwierdzenia) to Ctrl + Alt + F3

Metody

  1. Ctrl + Alt + F1, aby wyjść, i Ctrl + Alt + F3, aby je przywrócić
  2. sudo /etc/init.d/gdm3 restart
  3. systemctl restart gdm.service
  4. sudo service gdm3 restart
  5. dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
  6. Prostym sposobem jest naciśnięcie Alt + F2, a rnastępnie wpisz, a następnie naciśnij Enter. Będzie to działać tak długo, że powłoka nie będzie bezużyteczna.

Metoda 5 jest usuwana dosłownie z odpowiedzi korca, a 6 z odpowiedzi Braiam . Plagiat nie jest tu sprzeczny z zasadami, ale zdecydowanie nie jest fajny. Wszystko, co naprawdę musisz zrobić, to wskazać, że dzieło nie jest twoje, umieszczając je w cudzysłowie, i udzielić uznania, dołączając link do posta źródłowego i link do strony profilu autora. Aby uzyskać więcej informacji, zobacz ten post na blogu: Wymagane
uznanie

1
  1. Naciśnij Ctrl + Alt + F2, aby przejść do okna terminala. Czasami nie jest to możliwe.

  2. Naciśnij klawisze Alt + SysRq + R, aby uzyskać klawiaturę.

  3. Jeśli naciśnięcie klawiszy Ctrl + Alt + F2 przed niepowodzeniem, spróbuj ponownie teraz.

  4. Naciśnij klawisze Alt + SysRq + E, aby zakończyć wszystkie procesy.

  5. Naciśnij klawisze Alt + SysRq + I, aby zabić wszystkie procesy.

  6. Naciśnij klawisze Alt + SysRq + S, aby zsynchronizować dyski.

  7. Poczekaj na komunikat OK lub Gotowe. Jeśli nie widzisz komunikatu, spójrz na lampkę dysku twardego, aby zobaczyć, czy Synchronizacja ma znaczenie.

  8. Naciśnij klawisze Alt + SysRq + U, aby odmontować wszystkie dyski.

  9. Poczekaj na komunikat OK lub Gotowe. Jeśli nie zobaczysz komunikatu w ciągu 15-30 sekund, załóż, że dyski są odmontowane (lub że odmontowanie nie jest możliwe) i kontynuuj.

  10. Naciśnij klawisze Alt + SysRq + B, aby ponownie uruchomić komputer.


0

kill -15 gnome-shellnie działa dla mnie, ale kill -9działa. Myślę, że dzieje kill -9się tak, ponieważ uruchamia segfault, który powoduje, że gnome-shell sam się zrestartuje kill -15.


2
kill -9nie uruchamia segfault. Wysyła SIGKILL, niepokonany sygnał, dla którego jedynym działaniem jest natychmiastowe wyjście. Należy go używać tylko wtedy, gdy aplikacja nie reaguje na SIGTERM, czyli 15.
muru

pkill -11 gnome-shellspowodowałoby segfault, ponieważ dosłownie robi to sygnał 11. BTW, killpotrzebuje identyfikatora procesu, a NIE nazwy procesu. Miałeś na myśli pkillczy killall?
TSJNachos117,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.