Bagaimana saya bisa keluar dari GUI menggunakan CLI?

43

Saya memilih Openbox DE pada saat masuk dan sistem butuh waktu lama untuk memuat DE. Jadi saya beralih ke CLI ( Ctrl+ Alt+ F1) dan reboot sistem saya (tapi saya ingin keluar dari GUI dan tidak me-restart seluruh sistem).

Pertanyaan saya adalah, bisakah saya mengeluarkan beberapa perintah di CLI untuk mengeluarkan saya dari GUI sehingga saya dapat memilih DE yang berbeda. (Saya tidak ingin me-restart sistem saya setiap kali DE hang.)


$ 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
Ankit
sumber

Jawaban:

45

Untuk mengakhiri semua proses pengguna dan dikirim kembali ke layar login, Anda dapat menggunakan:

kill -9 -1

Jangan menjalankannya sebagai root, karena alasan yang dibahas di sini .

mblasco
sumber
3
Berfungsi bagus, tapi mengapa? Secara khusus, mengapa LightDM restart setelah Anda membunuh segalanya kecuali untuk init?
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 Karena secara paksa MEMBUNUH (9) SEGALA SESUATU diperbolehkan. Yang berarti setiap proses dimiliki oleh Anda. Menggunakan SIGKILL untuk menghentikan aplikasi sama sekali tidak dianjurkan! Gunakan SIGTERM (15). Aplikasi dapat bereaksi terhadap sinyal ini dan melakukan pembersihan.
ManuelSchneid3r
22

Ini dapat dilakukan dengan menggunakan gnome-session-quitperintah. Perlu --forceopsi untuk menekan dialog konfirmasi yang akan muncul tanpa itu.

Tidak seperti aplikasi yang dijalankan dari emulator terminal X, mengakhiri sesi dari TTY mengharuskan Anda untuk menambahkan DISPLAYvariabel untuk menunjukkan tampilan X mana yang menjalankan sesi. Karenanya:

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

dengan asumsi bahwa Anda menjalankan GNOME pada: 0, yang merupakan kasus dalam situasi normal.

  • Di Ubuntu 12.04LTS menjalankan GNOME, perintahnya

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

    bekerja. Argumen "--force" tidak ada di tingkat pembaruan saat ini]

Cumulus007
sumber
terima kasih, saya menjalankan perintah tetapi saya mendapat beberapa kesalahan. Saya telah mengedit posting saya untuk memasukkan kesalahan. Silakan bagikan jika saya telah melakukan kesalahan.
Ankit
Sayang saya, saya tidak melihat Anda menyebutkan Anda menggunakan openbox. Sayangnya, perintah ini hanya akan berfungsi dengan instalasi standar Ubuntu (Unity / GNOME). Sebagai alternatif, Anda dapat sepenuhnya mematikan GUI dan dengan demikian sesi Anda dengan menjalankan sudo service lightdm stop. edit: lingkungan desktop apa yang Anda gunakan? Openbox hanyalah pengelola jendela.
Cumulus007
saya mencoba menggunakan kde / openbox atau gnome / openbox.
Ankit
Tidak berfungsi jika terminal Anda bukan bagian dari sesi dbus yang sama dengan sesi gnome. Bagaimana Anda masuk ke sesi dbus lain?
Zan Lynx
Apakah ini perintah yang dijalankan ketika mengklik "Keluar ..." melalui GUI?
Dor
7

Harap ikuti saran takkat . Standarnya adalah Ctrl+ Alt+ Backspace.

Anda juga dapat menjalankan:

$ sudo service lightdm restart
terdon
sumber
1
gdm telah digantikan oleh lightdm. Juga, ctrl + alt + backspace dinonaktifkan secara default.
Cumulus007
@ Cumulus007 Terima kasih, jawab diperbarui. Saya tahu ctrl + alt + backspace dinonaktifkan secara default, tidak pernah mengerti mengapa, tetapi saya menyadarinya. Saya hanya memberi tahu OP apa kombinasi kunci standar yang paling umum digunakan. Saya menemukan yang terbaik adalah tetap pada standar karena membuatnya lebih mudah untuk memecahkan masalah.
terdon
1
Menghentikan lightdm berarti tidak ada prompt login setelah itu, jadi dia tidak akan mendapatkan kesempatan untuk masuk ke lingkungan yang berbeda.
poolie
1
Cukup adil @poolie, jawab diperbarui.
terdon
4

Cara lain,

sudo pkill -u NameOftheUser

atau

sudo pkill x

yang membunuh semua pengguna.

Suhaib
sumber
Itu agak kasar, bukan begitu?
acolyte
Keras? Ini sangat konyol.
HörmannHH
2

Masalah sebenarnya adalah bahwa variabel sesi DBUS harus ditetapkan dan cocok dengan sesi yang Anda coba kontrol.

Saya telah membuat skrip yang mengatur variabel sesi DBUS dari lingkungan sesi-gnome jika Anda ingin keluar dari pengguna / sesi lain:

Bagaimana cara me-restart Gnome-Shell dari baris perintah?

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
}
lihat
sumber
Menggunakan --logout --no-promptatau --forcebukan hanya --logoutmerupakan ide yang lebih baik, jika tidak, prompt logout akan ditampilkan.
gioele
1

Jika Anda berada di sesi xubuntu atau yang serupa, harus menggunakan xfce4-session-logout yang di-instal dari perintah sesi gnome, itu sebabnya Anda melihat peringatan

Sergio Abreu
sumber
1

Inilah yang paling cocok untuk saya (dengan xfce, lightdm dan ssh):

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

Atau

$ sudo service lightdm restart
pascalv
sumber
0

Sebagai alternatif, Anda dapat mengakhiri sesi pengguna menggunakan yang berikut ini, berfungsi dengan baik untuk keluar dari pengguna kecuali untuk pengguna root - ketika melakukan pemeliharaan misalnya.

loginctl | egrep -v "root|SESSION|listed" | awk '{print $1}' | xargs loginctl terminate-session
Charles van der Genugten
sumber
-2

Anda dapat menggunakan perintah killall gnome-sessionuntuk keluar. Ini akan bekerja untuk semua sesi GNOME dan jika saya ingat dengan benar semua yang berhubungan dengan GNOME. Ini akan membawa Anda kembali ke LightDM sehingga Anda dapat memilih DE baru atau pengguna baru. :)

Ryan McClure
sumber
2
Bukan cara terbaik untuk keluar. Periksa askubuntu.com/questions/69114/…
jokerdino
Belum pernah melihat opsi ini sebelumnya. Saya mungkin harus mulai menggunakan ini. Saya kira itu killall gnome-sessionadalah cara yang kuat untuk menutupnya.
Ryan McClure