CLI kullanarak GUI'den nasıl çıkış yapabilirim?


43

Giriş sırasında bir Openbox DE seçtim ve sistemin DE'yi yüklemesi yaş aldı. Bu yüzden CLI'ye ( Ctrl+ Alt+ F1) geçtim ve sistemimi yeniden başlattım (ancak GUI'den çıkmak ve tüm sistemi yeniden başlatmak istemedim).

Sorum şu ki, farklı DE seçebilmem için GUI'den çıkmama izin vermek için CLI'da bir komut verebilir miyim? (Her seferinde DE kilitlendiğinde sistemimi yeniden başlatmak istemiyorum.)


$ 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

Yanıtlar:


45

Tüm kullanıcı işlemlerini sonlandırıp giriş ekranına geri gönderilmek için şunları kullanabilirsiniz:

kill -9 -1

Burada tartışılan nedenlerden dolayı, kök olarak çalıştırmayın .


3
Harika çalışıyor, ama neden? Özel olarak, LightDM init dışındaki her şeyi öldürdükten sonra neden yeniden başlatılıyor?
Ciro Santilli,

1
@CiroSantilli 巴拿馬 文件 六四 事件 法轮功 Çünkü zorla öldürür (9) HER ŞEYE izin verilir. Bu size ait olan her işlem anlamına gelir. Uygulamaları sonlandırmak için SIGKILL kullanmak kesinlikle tavsiye edilmez! SIGTERM (15) kullanın. Uygulamalar bu sinyale tepki verebilir ve temizleme yapabilir.
ManuelSchneid3r

22

Bu gnome-session-quitkomut kullanılarak yapılabilir . --forceOnsuz görünecek olan onaylama iletişim kutusunu gizleme seçeneğine ihtiyacı var.

Bir X terminal emülatöründen çalışan uygulamaların aksine, bir TTY'den bir oturumu sonlandırmak, oturumu DISPLAYhangi X ekranının çalıştığını belirtmek için değişkeni eklemenizi gerektirir . Dolayısıyla:

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

GNOME üzerinde çalıştığını varsayarsak: 0, normal durumlarda durum budur.

  • GNOME çalıştıran Ubuntu 12.04LTS’de komut

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

    Eserleri. "--Force" argümanı mevcut güncelleme seviyesinde mevcut değil]


teşekkürler, komutu çalıştırdım ama bazı hatalar aldım. Hatayı eklemek için yayınımı düzenledim. Yanlış bir şey yaptıysam lütfen paylaşın.
Ankit

Benim hatam, openbox kullandığınızdan bahsettiğinizi fark etmedim. Ne yazık ki, bu komut yalnızca standart bir Ubuntu kurulumuyla (Unity / GNOME) çalışacaktır. Alternatif olarak, GUI'yi ve böylece oturumunuzu çalışarak tamamen kapatabilirsiniz sudo service lightdm stop. düzenleme: hangi masaüstü ortamını kullanıyorsunuz? Openbox sadece bir pencere yöneticisidir.
Cumulus007

kde / openbox veya gnome / openbox kullanmaya çalışıyorum.
Ankit

Terminaliniz gnome oturumuyla aynı dbus oturumunun bir parçası değilse çalışmaz. Başka bir dbus oturumuna nasıl girersiniz?
Zan Lynx

GUI üzerinden "Oturumu Kapat ..." tıklandığında uygulanan komut bu mu?
Dor

7

Lütfen takkat'in önerisini takip et . Standart Ctrl+ Alt+ Backspace.

Ayrıca çalıştırabilirsiniz:

$ sudo service lightdm restart

1
gdm, lightdm ile değiştirildi. Ayrıca, ctrl + alt + backspace varsayılan olarak devre dışıdır.
Cumulus007

@ Cumulus007 Teşekkürler, cevap güncellendi. Ctrl + alt + backspace'in varsayılan olarak devre dışı olduğunu biliyorum, nedenini anlamadım, ama bunun farkındayım. OP'ye sadece standart, en sık kullanılan tuş kombinasyonunun ne olduğunu bildiriyorum. Sorunları gidermeyi kolaylaştırdığı için standartlara uymanın en iyisi olduğunu düşünüyorum.
terdon

1
Lightdm'yi durdurmak, daha sonra oturum açma istemi olmadığı anlamına gelir, bu nedenle farklı bir çevreye giriş yapma şansı bulamaz.
poolie

1
Yeterince @poolie, cevap güncellendi.
terdon

4

Diğer yol,

sudo pkill -u NameOftheUser

veya

sudo pkill x

hangi tüm kullanıcıları öldürür.


Bu biraz zor, sence de öyle değil mi?
acolyte

Sert? Çok saçma.
HörmannHH

2

Asıl sorun, DBUS oturum değişkenlerinin ayarlanması ve kontrol etmeye çalıştığınız oturumla eşleşmesi gerektiğidir.

Diğer kullanıcıları / oturumları kapatmak istediğinizde, DBUS oturum değişkenlerini gnome oturum ortamından ayarlayan bu komut dosyasını oluşturdum:

Gnome-Shell'i komut satırından nasıl yeniden başlatabilirim?

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
}

Kullanılması --logout --no-promptveya --forceyerine sadece --logoutaksi bir çıkış istemi gösterilir, daha iyi bir fikirdir.
gioele

1

Eğer bir xubuntu oturumundaysanız veya benzerseniz, gnome oturum komutlarından oluşan xfce4-session-logout komutunu kullanmalısınız, bu yüzden uyarıları görüyorsunuz.


1

Bu benim için en uygun olan şeydir (xfce, lightdm ve ssh ile):

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

Veya

$ sudo service lightdm restart

0

Alternatif olarak, aşağıdakileri kullanarak kullanıcı oturumlarını sonlandırabilirsiniz, örneğin bakım yaparken, kök kullanıcı dışındaki kullanıcıların oturumu kapatması için iyi çalışır.

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

-2

killall gnome-sessionOturumu kapatmak için komutu kullanabilirsiniz . Bu, tüm GNOME oturumları için çalışacaktır ve GNOME ile ilgili olanları doğru hatırlıyorsam. Sizi LightDM'e geri götürür, böylece yeni bir DE veya yeni bir kullanıcı seçebilirsiniz. :)


2
Çıkış yapmanın en iyi yolu değil. Kontrol askubuntu.com/questions/69114/...
jokerdino

Bu seçeneği daha önce hiç görmedim. Muhtemelen bunu kullanmaya başlamalıyım. Sanırım killall gnome-sessionbunu kapatmak için güçlü bir yol.
Ryan McClure
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.