लॉगिन सत्रों में D- बस सत्रों का पुन: उपयोग करें


20

मैं कई लॉगिन सत्रों के माध्यम से एक मशीन का उपयोग करता हूं। सत्र का जीवनकाल ओवरलैप हो सकता है या नहीं हो सकता है। मेरे मामले में, ये लॉगिन सत्र हमेशा SSH के ऊपर होते हैं, लेकिन मैं स्थानीय सत्रों को भी संभालना पसंद करूंगा।

मुझे कभी-कभी इन सत्रों में डी-बस की आवश्यकता होती है, और मैं डीवी -बस सत्र को इन लॉगिन सत्रों में साझा करना चाहता हूं, ताकि वीवीएफएस का उपयोग किया जा सके

ऐसा करने के लिए अनुशंसित तरीका क्या है? मैं डी-बस के किसी भी उपयोग को नहीं तोड़ना चाहता जिसके बारे में मुझे जानकारी नहीं है। मैंने उपयोग करने पर विचार किया है

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

लेकिन (Ubuntu 12.04 के रूप में) यह सही नहीं लगता है:

  • इसके लिए एक एक्स सत्र की आवश्यकता होती है, लेकिन मेरे एसएसएच सत्र एक्स डिस्प्ले को अग्रेषित कर सकते हैं या नहीं भी कर सकते हैं, और यहां तक ​​कि जो समान नहीं हैं $DISPLAY;
  • यदि कोई X डिस्प्ले उपलब्ध नहीं है, तो dbus-launchशिकायत करता है कि "ऑटोलॉन्च त्रुटि: X11 आरंभीकरण विफल रहा।" और डेमॉन शुरू नहीं करता है;
  • dbus-launchआदमी पेज कहता है कि " --autolaunchविकल्प एक आंतरिक कार्यान्वयन विस्तार माना जाता है (...)। किसी भी तरह से इसका उपयोग करने के लिए कोई वास्तविक कारण नहीं है। "

क्या dbus-launchडी-बस सूट में कोई अन्य उपकरण स्वचालित रूप से एक रनिंग का पता लगाने dbus-daemonऔर इसे कनेक्ट करने का समर्थन करता है? ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}यदि डी-बस को एक्स कनेक्शन के साथ शुरू किया गया है, तो आवश्यक जानकारी है , लेकिन एक्स कनेक्शन उपलब्ध नहीं होने पर कहीं भी संग्रहीत नहीं किया जाता है।

क्या मुझे अपनी डी-बस सेशन फाइल को कोब करना चाहिए? यदि मैं करता हूं, तो क्या मुझे ~/.dbus/session-busनिर्देशिका में फ़ाइल का उपयोग करना चाहिए ? क्या रास्ता /var/lib/dbus/machine-idविश्वसनीय और पोर्टेबल है?


1
यह उत्तर आपके लिए एक समाधान का हिस्सा हो सकता है: serverfault.com/questions/405518/…
sdive

1
मैं 2 साल पहले DBus के साथ बहुत कुछ कर रहा था और सूत्रों को शामिल करते हुए बहुत कुछ पढ़ने से मेरी याददाश्त में बचा हुआ है: DBus शांत हो सकता है, लेकिन एक सिस्टम उदाहरण के रूप में एक बार चलाने के लिए बहुत अनुकूल है और ठीक एक बार फिर से प्रत्येक स्थानीय उपयोगकर्ता सत्र के लिए कि यह शांत के बजाय सिर्फ बेवकूफ है। मेरा अनुमान है कि आपको खुद ही सब कुछ करना होगा। मैंने किया, लेकिन मेरे पास हमेशा एक्स सेशन हैं इसलिए मेरे लिए यह थोड़ा आसान था। सौभाग्य।
बनंगुइन

मैंने बीएलएफएस पुस्तक (स्कैच से परे लिनक्स ) में डब विन्यास पर कुछ अच्छी जानकारी देखी है ।
फिस्कल

जवाबों:


6

डीबस डेमॉन डेमॉन के लिए सेटिंग्स को थोड़ा मुश्किल बनाता है।

मेरे सेटअप के लिए, सेटिंग्स dbus-launch --sh-syntaxउस फ़ाइल में सहेजी जाती हैं जो स्रोत द्वारा होती है .bash_rc। इसका नकारात्मक पक्ष यह है कि प्रत्येक रिबूट के बाद, यह प्रक्रिया मैन्युअल रूप से की जाती है।

हालांकि, मौजूदा डीबस डेमन के लिए जांच करना बहुत सरल होना चाहिए। मान लें कि सेटिंग फ़ाइल $ HOME / .dbus_settings पर है:

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

--autolaunchविकल्प के बिना , मुझे नहीं लगता कि एक एक्स विंडोज़ कनेक्शन की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.