CLI를 사용하여 GUI에서 로그 아웃하려면 어떻게해야합니까?


43

로그인 할 때 Openbox DE를 선택했고 시스템이 DE를로드하는 데 오랜 시간이 걸렸습니다. 그래서 CLI ( Ctrl+ Alt+ F1) 로 전환하고 시스템을 재부팅했습니다 (그러나 GUI에서 로그 아웃하고 전체 시스템을 다시 시작하지 않으려 고 함).

내 질문은 CLI에서 일부 명령을 실행하여 GUI에서 로그 아웃하여 다른 DE를 선택할 수 있습니까? DE가 중단 될 때마다 시스템을 다시 시작하고 싶지 않습니다.


$ DISPLAY=:0 gnome-session-quit --force

** (gnome-session-quit:3144): WARNING **: Failed to call logout: The name org.gnome.SessionManager was not provided by any .service files

답변:


45

모든 사용자 프로세스를 끝내고 로그인 화면으로 다시 보내려면 다음을 사용할 수 있습니다.

kill -9 -1

여기서 논의 된 이유로 루트로 실행하지 마십시오 .


3
잘 작동하지만 왜? 특히, init를 제외한 모든 것을 종료 한 후 LightDM이 다시 시작되는 이유는 무엇입니까?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 그것은 강제로 죽이기 때문에 (9) 모든 것이 허용됩니다. 이는 귀하가 소유 한 모든 프로세스를 의미합니다. SIGKILL을 사용하여 앱을 종료하는 것은 절대 권장하지 않습니다! SIGTERM (15)을 사용하십시오. 응용 프로그램은이 신호에 반응하여 정리를 수행 할 수 있습니다.
ManuelSchneid3r

22

gnome-session-quit명령을 사용하여 수행 할 수 있습니다 . --force확인 대화 상자가 없으면 표시되지 않도록 하는 옵션 이 필요합니다 .

X 터미널 에뮬레이터에서 실행되는 응용 프로그램과 달리 TTY에서 세션을 종료하려면 세션을 DISPLAY실행중인 X 디스플레이를 나타내는 변수를 추가해야합니다 . 금후:

DISPLAY=:0 gnome-session-quit --force

: 0에서 그놈을 실행한다고 가정하면, 정상적인 상황에서 발생합니다.

  • GNOME을 실행하는 Ubuntu 12.04LTS에서 다음 명령

    "DISPLAY=:0 gnome-session-quit --logout --no-prompt" 
    

    공장. "--force"인수가 현재 업데이트 레벨에 존재하지 않습니다]


감사합니다. 명령을 실행했지만 오류가 발생했습니다. 오류를 포함하도록 게시물을 편집했습니다. 내가 잘못한 것을 공유하십시오.
Ankit

내 나쁜, 나는 당신이 openbox를 사용하고 있다고 언급하지 않았다. 불행히도이 명령은 표준 Ubuntu 설치 (Unity / GNOME)에서만 작동합니다. 다른 방법으로을 실행하여 GUI 및 세션을 완전히 종료 할 수 있습니다 sudo service lightdm stop. 편집 : 사용중인 데스크탑 환경은 무엇입니까? Openbox는 창 관리자 일뿐입니다.
Cumulus007

kde / openbox 또는 gnome / openbox를 사용하려고합니다.
Ankit

터미널이 gnome-session과 동일한 dbus 세션의 일부가 아닌 경우 작동하지 않습니다. 다른 dbus 세션에 어떻게 참여합니까?
Zan Lynx

이것은 GUI를 통해 "로그 아웃 ..."을 클릭 할 때 실행되는 명령입니까?
Dor

7

takkat의 제안을 따르십시오 . 표준은 Ctrl+ Alt+ Backspace입니다.

다음을 실행할 수도 있습니다.

$ sudo service lightdm restart

1
gdm은 lightdm으로 대체되었습니다. 또한 ctrl + alt + backspace는 기본적으로 비활성화되어 있습니다.
Cumulus007

@ Cumulus007 감사합니다. 답변이 업데이트되었습니다. 기본적으로 Ctrl + Alt + 백 스페이스가 비활성화되어 있음을 알고 이유를 이해하지 못했지만 알고 있습니다. OP에 표준, 가장 일반적으로 사용되는 키 조합이 무엇인지 알려줍니다. 문제를 쉽게 해결할 수 있기 때문에 표준을 따르는 것이 가장 좋습니다.
terdon

1
lightdm을 중지하면 나중에 로그인 프롬프트가 표시되지 않으므로 다른 환경에 로그인 할 수 없습니다.
poolie

1
충분한 @poolie, 답변이 업데이트되었습니다.
terdon

4

또 다른 방법,

sudo pkill -u NameOftheUser

또는

sudo pkill x

모든 사용자를 죽입니다.


조금 거칠지 않습니까?
acolyte

거친? 매우 바보입니다.
HörmannHH

2

실제 문제는 DBUS 세션 변수를 설정하고 제어하려는 세션과 일치해야한다는 것입니다.

다른 사용자 / 세션을 로그 아웃하려는 경우 gnome-session 환경에서 DBUS 세션 변수를 설정하는이 스크립트를 작성했습니다.

명령 줄에서 Gnome-Shell을 다시 시작하는 방법?

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
}

그냥 --logout --no-prompt또는 --force대신에를 사용 --logout하는 것이 더 좋습니다. 그렇지 않으면 로그 아웃 프롬프트가 표시됩니다.
gioele

1

xubuntu 세션 또는 이와 유사한 경우, 그놈 세션 명령에 대해 xfce4-session-logout insted를 사용해야합니다. 그러므로 경고가 표시됩니다.


1

이것이 xfce, lightdm 및 ssh와 함께 나에게 가장 적합한 방법입니다.

$ DISPLAY=:0.0 xfce4-session-logout --logout

또는

$ sudo service lightdm restart

0

대안으로, 다음을 사용하여 사용자 세션을 종료 할 수 있으며, 예를 들어 유지 보수를 수행 할 때 루트 사용자를 제외하고 사용자를 로그 아웃하는 것이 좋습니다.

loginctl | egrep -v "root|SESSION|listed" | awk '{print $1}' | xargs loginctl terminate-session

-2

명령 killall gnome-session을 사용하여 로그 아웃 할 수 있습니다 . 이것은 모든 그놈 세션에서 작동하며 모든 그놈 관련 세션을 올바르게 기억한다면. 새 DE 또는 새 사용자를 선택할 수 있도록 LightDM으로 바로 돌아갑니다. :)


2
로그 아웃하는 가장 좋은 방법은 아닙니다. askubuntu.com/questions/69114/…를
jokerdino

전에는이 옵션을 본 적이 없습니다. 아마 이것을 사용하기 시작해야합니다. 나는 killall gnome-session그것이 그것을 닫는 강력한 방법이라고 생각합니다.
Ryan McClure
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.