Xorg를 다시 시작하지 않고 GNOME을 다시 시작하시겠습니까?

Xorg를 다시 시작하지 않고 GNOME을 다시 시작하시겠습니까?

때로는 특정 응용 프로그램이 충돌하여 상단 표시줄이 사라지는 등 Gnome 데스크탑을 불안정하게 만드는 경우가 있습니다. X ctrl+shift+backspace를 다시 시작하면 재설정할 수 있습니다. 하지만 Bar나 Gnome을 완전히 다시 활성화하는 방법이 있나요?

답변1

Gnome을 다시 시작할 수 있어야 합니다.

 gnome-shell --replace

매뉴얼에서:

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

답변2

Alt-F2(IIRC)를 눌러 명령을 입력할 수 있는 창을 열 수 있습니다. 일반 명령 외에도 그놈 쉘은 데스크탑 환경의 동작을 제어하는 ​​몇 가지 사용자 정의 명령도 지원합니다. 이 경우 restart컴퓨터가 아닌 셸을 다시 시작해야 합니다.

충돌이 너무 많아 제대로 작동하지 않는 경우 다음을 사용하세요.테든의 답변.

답변3

간단히 말해서, GUI에서 이 작업을 수행할 수 없는 경우 동일한 사용자(텍스트 콘솔, SSH 등)로 로그인하고 다음을 입력하세요.

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

나는 종종 텍스트 콘솔을 통해 이 작업을 수행합니다. CTRL++를 사용하여 ALT다른 콘솔로 전환 할 수 있습니다 .FnN일반적으로 로그인 화면에서 시작되며 첫 번째 세션인 무료 콘솔 F3번호 입니다 F1.F2

분명히 적용되지 않습니다웨이랜드gnome-shell은 재시작을 지원하지 않기 때문입니다.


자세한 답변:

비결은 필요한 환경을 복제하는 것입니다.그놈 껍질- 정확히 무엇이 필요한지는 확인하지 못했지만 적어도 DISPLAY기다려야 합니다.XAUTHORITY그놈 껍질연결할 수 있습니다X 서버, 그러면 아마도 추가로그놈 껍질그리고 그 확장.

프로세스 트리는 다음과 같아야 합니다.

      |            |-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)

이 예에서는그놈 세션 바이너리(pid 6475)는 모든 gnome 세션 프로세스의 상위 프로세스이므로 이를 사용하여 환경을 가져옵니다. 직접 사용 하면 gnome-shellgnome-shell 자체가 하위 프로세스에 대해 더 많은 변수를 설정하는 것을 볼 수 있습니다.

나는 pgrep돌아오는데 사용한다PID이 프로세스는 현재 사용자에 대해서만 작동합니다(여러 사용자가 로그인하더라도 항상 하나의 PID만 있어야 합니다. 두 번 성공적으로 로그인하면 심각한 문제가 있는 것입니다).

그런 다음 (null로 구분된 환경 변수 목록)에서 작업 파일을 읽고 environ모든 줄 앞에 ./proc/<PID>/exporteval

이제 gnome-shell --replaceGUI 세션에 있는 것처럼 실행할 수 있습니다. 이 셸을 열어두려면 리디렉션이 필요할 수 있습니다.표준 출력그리고표준 오류 오류율어딘가에 보낼 수도 있지만 /dev/null만일을 대비해 보관하고 싶습니다( .xsession-errors모든 GUI 출력을 보내는 데 사용되는 레거시 파일 X입니다. 저는 최신 시스템을 믿습니다.체계또는통나무모든 출력을 캡처하고 기록합니다.)

답변4

gnome을 루트로 다시 시작할 수 있습니다:

services gdm restart

관련 정보