Giriş oturumlarında D-Bus oturumlarını yeniden kullanma


20

Bir makineye birden çok oturum açma oturumuyla erişiyorum. Oturumların yaşam süreleri çakışabilir veya örtüşmeyebilir. Benim durumumda, bu oturumlar şu anda her zaman SSH üzerinden, ancak yerel oturumları da işlemeyi tercih ederim.

Bazen bu oturumlarda D-Bus'a ihtiyacım var ve GVFS'yi kullanmak için aynı D-Bus oturumunu bu giriş oturumlarında paylaşmak istiyorum .

Bunu yapmanın önerilen yolu nedir? Farkında olamayacağım D-Bus kullanımını kırmak istemiyorum. Kullanmayı düşündüm

export $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id))

ancak (Ubuntu 12.04'ten itibaren) bu doğru görünmüyor:

  • bu bir X oturumu gerektirir, ancak SSH oturumlarım bir X ekranını yönlendirebilir veya yönlendirmeyebilir ve hatta olanlar aynı olmayabilir $DISPLAY;
  • X ekranı yoksa, dbus-launch“Otomatik Başlat hatası: X11 başlatılamadı” ve bir arka plan programı başlatmaz;
  • dbus-launch“O adam sayfası devletler --autolaunchseçenek dahili bir uygulama olarak kabul edilir (...). Yine de libdbus uygulamasının dışında kullanmak için gerçek bir neden yok. ”

Mu dbus-launchveya D-Bus paketi güçlendirilmesinde bir araç otomatik olarak bir çalışan tespit dbus-daemonve ona bağlanma? ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}D-Bus bir X bağlantısıyla başlatılırsa, ancak X bağlantısı yoksa hiçbir yerde saklanmamış gibi görünüyorsa gerekli bilgiler bulunur .

Kendi D-Bus oturum dosyamı kaldırmalı mıyım? Varsa, ~/.dbus/session-busdizinde bir dosya kullanmalı mıyım? Yol /var/lib/dbus/machine-idgüvenilir ve taşınabilir mi?


1
Bu cevap sizin için bir çözümün parçası olabilir: serverfault.com/questions/405518/…
sdive

1
DBus ile 2 yıl önce çok uğraşıyordum ve kaynaklar da dahil olmak üzere çok fazla okumadan hafızamda kalan her şey şuydu: DBus havalı olabilir, ancak bir kez bir sistem örneği olarak ve tam olarak bir kez çalıştırılmak için çok uyarlanmıştı cool yerine sadece aptal olduğu her yerel kullanıcı oturumu için. Sanırım her şeyi kendin yapmak zorundasın. Yaptım, ama her zaman X seansım var, bu yüzden benim için biraz daha kolaydı. İyi şanslar.
Bananguin

BLFS kitabında dbus yapılandırması hakkında güzel bilgiler gördüm ( Linux From Scratch'ın Ötesinde ).
Fiisch

Yanıtlar:


6

DBus, dbus arka plan programının ayarlarını paylaşmayı biraz zorlaştırır.

Benim kurulum için, gelen ayarları dbus-launch --sh-syntaxtarafından kaynak olan bir dosyaya kaydedilir .bash_rc. Bunun dezavantajı, her yeniden başlatmadan sonra bu işlemin manuel olarak gerçekleştirilmesidir.

Bununla birlikte, mevcut bir DBus arka plan programının kontrol edilmesi çok basit olmalıdır. Diyelim ki ayarlar dosyası $ HOME / .dbus_settings konumunda:

need_start=1

if [ -r "$HOME/.dbus_settings" ]
then
    . "$HOME/.dbus_settings"
fi

if [ -n "$DBUS_SESSION_BUS_PID" ]
then
    if kill -0 "$DBUS_SESSION_BUS_PID" 2>/dev/null
    then
        need_start=0  # Found one
    fi
fi

if [ "$need_start" -ne 0 ]
then
    dbus-launch --sh-syntax >"$HOME/.dbus_settings"
    . "$HOME/.dbus_settings"
fi

--autolaunchSeçenek olmadan, bir X windows bağlantısının gerekli olduğuna inanmıyorum.

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.