ฉันจะออกจาก GUI โดยใช้ CLI ได้อย่างไร


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
ใช้งานได้ดี แต่ทำไม โดยเฉพาะทำไม LightDM รีสตาร์ทหลังจากที่คุณฆ่าทุกอย่างยกเว้น init
Ciro Santilli 新疆改造中心法轮功六四事件

1
@CiroSantilli 巴拿馬文件六四事件法轮功เพราะมันฆ่าได้ดี (9) ทุกอย่างที่ได้รับอนุญาต ซึ่งหมายถึงทุกกระบวนการที่คุณเป็นเจ้าของ การใช้ SIGKILL เพื่อยุติแอปไม่สามารถทำได้อย่างแน่นอน! ใช้ SIGTERM (15) แอปพลิเคชันสามารถตอบสนองต่อสัญญาณนี้และทำการล้างข้อมูล
ManuelSchneid3r

22

สิ่งนี้สามารถทำได้โดยใช้gnome-session-quitคำสั่ง ต้องมี--forceตัวเลือกในการระงับกล่องโต้ตอบการยืนยันที่จะปรากฏขึ้นหากไม่มี

ซึ่งแตกต่างจากแอปพลิเคชันที่เรียกใช้จากตัวจำลองเทอร์มินัล X การสิ้นสุดเซสชันจาก TTY ต้องการให้คุณผนวกDISPLAYตัวแปรเพื่อระบุว่าจอแสดงผล X ตัวใดที่กำลังใช้งานเซสชัน ดังนั้น:

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

สมมติว่าคุณใช้ GNOME ใน: 0 ซึ่งเป็นกรณีปกติ

  • ใน Ubuntu 12.04LTS ที่ใช้ GNOME คำสั่ง

    "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

ไม่ทำงานหากเทอร์มินัลของคุณไม่ได้เป็นส่วนหนึ่งของเซสชัน dbus เดียวกับเซสชัน gnome-session คุณจะเข้าสู่เซสชัน dbus อื่นได้อย่างไร
Zan Lynx

นี่เป็นคำสั่งที่เรียกใช้งานเมื่อคลิก "ออกจากระบบ ... " ผ่าน GUI หรือไม่
Dor

7

โปรดปฏิบัติตามข้อเสนอแนะของ takkat มาตรฐานคือCtrl+ +AltBackspace

คุณยังสามารถเรียกใช้:

$ sudo service lightdm restart

1
gdm ถูกแทนที่โดย lightdm นอกจากนี้ ctrl + alt + backspace ถูกปิดใช้งานโดยค่าเริ่มต้น
Cumulus007

@ Cumulus007 ขอบคุณตอบปรับปรุง ฉันรู้ว่า ctrl + alt + backspace ถูกปิดใช้งานโดยค่าเริ่มต้นไม่เข้าใจว่าทำไม แต่ฉันรู้ ฉันแค่แจ้งให้ OP ทราบว่าชุดค่าคีย์มาตรฐานที่ใช้กันมากที่สุดคืออะไร ฉันพบว่ามันเป็นการดีที่สุดที่จะยึดมั่นในมาตรฐานเพราะมันง่ายต่อการแก้ไขปัญหา
terdon

1
การหยุด lightdm จะหมายถึงไม่มีพรอมต์การล็อกอินหลังจากนั้นดังนั้นเขาจะไม่ได้รับโอกาสในการเข้าสู่ระบบในสภาพแวดล้อมที่แตกต่างกัน
พู

1
ยุติธรรมเพียงพอ @poolie ตอบรับการอัปเดต
terdon

4

อีกวิธีหนึ่ง

sudo pkill -u NameOftheUser

หรือ

sudo pkill x

ซึ่งฆ่าผู้ใช้ทั้งหมด


มันค่อนข้างรุนแรงคุณไม่คิดเหรอ?
acolyte

รุนแรง? มันโง่มาก
HörmannHH

2

ปัญหาที่แท้จริงคือตัวแปรเซสชั่น DBUS จะต้องตั้งค่าและตรงกับเซสชั่นที่คุณพยายามควบคุม

ฉันได้สร้างสคริปต์นี้ซึ่งตั้งค่าตัวแปรเซสชัน DBUS จากสภาพแวดล้อมเซสชัน gnome ในกรณีที่คุณต้องการออกจากระบบผู้ใช้ / เซสชันอื่น:

จะรีสตาร์ท 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 โดยใช้คำสั่ง gnome session นั่นคือเหตุผลที่คุณเห็นคำเตือน


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เพื่อออกจากระบบ สิ่งนี้จะใช้ได้กับเซสชัน GNOME ทั้งหมดและถ้าฉันจำได้อย่างถูกต้องกับ GNOME ทั้งหมด มันจะพาคุณย้อนกลับไปที่ LightDM เพื่อให้คุณสามารถเลือก DE ใหม่หรือผู้ใช้ใหม่ :)


2
ไม่ใช่วิธีที่ดีที่สุดในการออกจากระบบ ตรวจสอบaskubuntu.com/questions/69114/…
jokerdino

ไม่เคยเห็นตัวเลือกนี้มาก่อน ฉันน่าจะเริ่มใช้สิ่งนี้ ฉันคิดว่านั่นkillall gnome-sessionเป็นวิธีที่มีพลังในการปิดมัน
Ryan McClure
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.