KDE oturumu kök ayrıcalıkları olmadan kabuktan nasıl düzgün şekilde sonlandırılır


17

NX üzerinden makineye (KDE ile OpenSuse 11) erişiyorum.

Sistemim tarafından yakalandığı için Alt-Ctrl-Del kısayollarını kullanamıyorum. Normal oturum kapatma düğmesi, KDE oturumunu sonlandırmadan NX oturumunu sonlandırır. Ben çağrı yapamazsınız kdm restartHiçbir kök ayrıcalıklarına sahip olarak.

Birincisi bir giriş kabuğunda olmamaktan ve ikincisi sadece konsolu kapatmaktan şikayet eden diğer vahşi tahminler de çalışıyor logoutve exitçalışmıyor.

Kabuğum-fu zayıf, bu yüzden herhangi bir yardım takdir ediliyor.



@ MartinSchröder - ah, iyi yakalama - aslında aynı soru. Ancak Paul'ün bu soruya cevabı, Gilles'in diğerine cevabından daha kapsamlı.
kostja

Yanıtlar:


30

Oturumu sonlandırması gereken (eğer mümkünse) KDE'ye dbus aracılığıyla oturum kapatma komutu gönderebilirsiniz.

qdbus org.kde.ksmserver /KSMServer logout 0 0 0

dbus, uygulamaların birbirleriyle iletişim kurmasını sağlayan bir mesajlaşma sistemidir ve qdbuskomut, uygulamalara dbus mesajları göndermek için bir yardımcı programdır.

Uygulamalar dbus'a kaydolur ve ksmserverKDE'nin bir kısmı oturum yöneticisidir - kimin oturum açtığına bakar.

Bu yüzden bir mesaj gönderiyor ksmserveriçin /KSMServerarayüz ve çıkış için söylüyorum. Gönderdiğimiz mesaj, masaüstünüzdeki oturum kapatma simgesine tıkladığınızda KSM'ye gönderilen mesajla aynıdır.

Üç sıfır parametredir ve yaptığımız oturum kapatma türünü değiştirebilir:

İlk parametre:

  • 0 = Onay beklemeyin
  • 1 = Onay bekleyin (30 saniyelik bir zaman aşımı ile)

İkinci parametre:

  • -1 = Eylem istemi, varsayılan olarak kapanma (Yalnızca onay beklerken mantıklı.)
  • 0 = Çıkış
  • 1 = Yeniden başlat
  • 2 = Kapatma

Üçüncü parametre "when" parametresidir, ancak etkisinin ne olduğu net değildir.


Bu komutu çalıştırmadan önce DISPLAYortam değişkenini (büyük olasılıkla :0) ayarladığınızdan emin olun , aksi takdirde şikayet eder.
palswim

3

Kabul edilen cevap KDE5'e özgü bir çözümdür, daha genel bir yaklaşım

loginctl list-sessions
loginctl terminate-session <id>

veya

loginctl terminate-user <username>

Kaynak

Daha fazla olası komut var:

Session Commands:
  list-sessions            List sessions
  session-status [ID...]   Show session status
  show-session [ID...]     Show properties of sessions or the manager
  activate [ID]            Activate a session
  lock-session [ID...]     Screen lock one or more sessions
  unlock-session [ID...]   Screen unlock one or more sessions
  lock-sessions            Screen lock all current sessions
  unlock-sessions          Screen unlock all current sessions
  terminate-session ID...  Terminate one or more sessions
  kill-session ID...       Send signal to processes of a session

User Commands:
  list-users               List users
  user-status [USER...]    Show user status
  show-user [USER...]      Show properties of users or the manager
  enable-linger [USER...]  Enable linger state of one or more users
  disable-linger [USER...] Disable linger state of one or more users
  terminate-user USER...   Terminate all sessions of one or more users
  kill-user USER...        Send signal to processes of a user

Seat Commands:
  list-seats               List seats
  seat-status [NAME...]    Show seat status
  show-seat [NAME...]      Show properties of seats or the manager
  attach NAME DEVICE...    Attach one or more devices to a seat
  flush-devices            Flush all device associations
  terminate-seat NAME...   Terminate all sessions on one or more seats
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.