Reporniți GNOME fără a reporni Xorg? (Unix, Xorg, Gnome)

Hojat Taheri a intrebat.

uneori se întâmplă ca unele aplicații să se blocheze și să facă desktop-ul Gnome instabil, de exemplu, bara superioară dispare. prin repornirea X ctrl+shift+backspace o pot reseta. dar există o modalitate de a reactiva bara sau Gnome în întregime?

Comentarii

  • Ce versiune de GNOME folosiți, 2 sau 3?  > Por slm.
4 răspunsuri
terdon

Ar trebui să puteți să reporniți Gnome cu

 gnome-shell --replace

Din manual:

DESCRIPTION
   GNOME Shell provides core user interface functions for the GNOME 3 desktop,
   like switching to windows and launching  applications.  GNOME  Shell  takes
   advantage  of  the  capabilities of modern graphics hardware and introduces
   innovative user interface concepts to provide  a  visually  attractive  and
   easy to use experience.

OPTIONS
   --replace
          Replace the running window manager

Comentarii

  • Acest lucru funcționează dacă puteți utiliza în continuare un shell din GUI. Dacă nu puteți vedea răspunsul meu unde o fac dintr-un alt shell. –  > Por Thomas Guyot-Sionnest.
strugee

Puteți apăsa Alt-F2 (IIRC) pentru a obține o fereastră în care puteți tasta o comandă. În plus față de comenzile obișnuite, GNOME Shell acceptă câteva comenzi personalizate pentru a controla comportamentul mediului de birou. În acest caz, doriți restart, , care repornește Shell-ul, nu calculatorul.

Dacă se blochează prea mult pentru ca acest lucru să funcționeze, utilizați răspunsul lui terdon.

Thomas Guyot-Sionnest

TL;DR, dacă nu o puteți face din GUI, conectați-vă ca același utilizator (consolă text, ssh, etc.) și tastați:

eval "$(while read -d $'' line; do printf 'export %q
' "$line"; done </proc/$(pgrep -fu$USER gnome-session-binary)/environ)"
gnome-shell --replace >.xsession-errors 2>&1 &

Eu o fac adesea dintr-o consolă text (CTRL+ALT+Fn unde n este o consolă liberă, de obicei începând de la F3 ca F1 este ecranul de conectare și F2 este sesiunea mea).

În mod evident, nu va funcționa cu Wayland, deoarece repornirile gnome-shell nu sunt acceptate pe acesta.


Răspuns detaliat:

Șmecheria constă în replicarea mediului cerut de gnome-shell – Nu am verificat exact ce este necesar, dar cel puțin aveți nevoie de DISPLAY și XAUTHORITY deci gnome-shell să se poată conecta la serverul X, iar apoi câteva suplimentare sunt foarte probabil cerute de gnome-shell și de extensiile sale.

Arborele de procese ar trebui să arate cam așa:

      |            |-gdm-session-wor(6444)-+-gdm-x-session(6464)-+-Xorg(6466)-+-{InputThread}(6472)
      |            |                       |                     |            `-{radeon_cs:0}(6467)
      |            |                       |                     |-gnome-session-b(6475)-+-evolution-alarm(6712)-+-{dconf worker}(6789)
[...]
      |            |                       |                     `-{gmain}(6465)
      |            |                       |-{gdbus}(6446)
      |            |                       `-{gmain}(6445)

În acest exemplu gnome-session-binary (pid 6475) este părintele tuturor proceselor de sesiune gnome, așa că acesta este cel pe care îl folosesc pentru a obține mediul. Eu folosesc pgrep pentru a returna pid al acelui proces doar pentru utilizatorul curent (ar trebui să existe întotdeauna doar unul singur).

Apoi, citesc fișierul environ din /proc/<PID>/ (listă de variabile de mediu separate prin zero) și preapreciez toate liniile cu export. Aceste comenzi sunt apoi transmise înapoi la shell-ul meu prin eval.

În acest moment, pot rula gnome-shell --replace ca și cum aș fi făcut-o din sesiunea GUI. Dacă intenționați să păstrați deschis acel shell, probabil că veți dori să redirecționați STDOUT și STDERR undeva; le puteți trimite la /dev/null dar mie îmi place să le păstrez în preajmă pentru orice eventualitate (.xsession-errors este fișierul vechi în care X obișnuia să arunce toate ieșirile GUI; pe sistemele moderne cred că systemd sau journald captează toate ieșirile și le înregistrează în schimb).

Fabio Duran Verdugo

Puteți reporni gnome folosind ca root:

services gdm restart

Comentarii

  • De ce a fost votat în jos? Nu funcționează corect? –  > Por Setaa.

Tags:,