के लिए स्वचालित रूप से $ DISPLAY चर सेट कैसे करूं, मुझे लगता है कि $ display स्थानीयहोस्ट पर सेट है: 0,0 अगर मैं एक वीएनसी सर्वर पर चल रहा हूं तो यह सही नहीं हो सकता है, क्या स्वचालित रूप से सेट करने का कोई तरीका है यह मेरी लॉगिन स्क्रिप्ट में है?मैं अपने वर्तमान सत्र
उत्तर
क्या आप बैश का उपयोग करते हैं? अपनी होम निर्देशिका में फ़ाइल .bashrc पर जाएं और चर सेट करें, फिर इसे निर्यात करें।
DISPLAY = localhost: 0.0; निर्यात DISPLAY
यदि आप सभी उपयोगकर्ताओं के लिए ऐसा करना चाहते हैं तो आप/etc/bashrc का उपयोग कर सकते हैं।
तुम भी में देखने के लिए चाहते हो सकता है ~/.bash_profile और/etc/प्रोफ़ाइल
संपादित करें:
function get_xserver()
{
case $TERM in
xterm)
XSERVER=$(who am i | awk '{print $NF}' | tr -d ')''(')
XSERVER=${XSERVER%%:*}
;;
aterm | rxvt)
;;
esac
}
if [ -z ${DISPLAY:=""} ]; then
get_xserver
if [[ -z ${XSERVER} || ${XSERVER} == $(hostname) || \
${XSERVER} == "unix" ]]; then
DISPLAY=":0.0" # Display on local host.
else
DISPLAY=${XSERVER}:0.0 # Display on remote host.
fi
fi
export DISPLAY
अगर मैं इसे अपने bashrc में डालता हूं तो यह vncserver के साथ काम नहीं करेगा क्योंकि यह अन्य डिस्प्ले बनाता है जैसे localhost: 1.0 आदि इसलिए मुझे थोड़ा और सामान्य समाधान चाहिए। –
आप सही $ प्रदर्शन निर्यात करने के लिए अपने VNC क्लाइंट बताना होगा एक बार लॉग इन करने के बाद। आप ऐसा कैसे करेंगे जो शायद आपके वीएनसी क्लाइंट पर निर्भर करेगा।
मैं यहाँ अनुमान लगा रहा हूँ, मुद्दों मैंने पहले भी किया है जो मैं हल किया पर आधारित
- आप मशीन बी पर एक VNC सर्वर से कनेक्ट कर रहे हैं, पर एक VNC क्लाइंट का उपयोग यह प्रदर्शित मशीन ए
- आप मशीन बी पर एक कंसोल (xterm या समकक्ष) लॉन्च कर रहे हैं और मशीन सी
- से कनेक्ट करने के लिए इसका उपयोग कर आप मशीन सी पर एक्स-आधारित एप्लिकेशन लॉन्च करना चाहते हैं, इसे वीएनसी सर्वर पर प्रदर्शित करना मशीन बी पर, ताकि आप इसे मशीन ए
मैं दो समाधानों के साथ समाप्त हुआ। मेरा मूल समाधान आरएसएस का उपयोग करने पर आधारित था। तब से, हमारे अधिकांश सर्वरों ने एसएसएच स्थापित किया है, जिसने इसे आसान बना दिया है।
आरएसएच का उपयोग करके, मैंने मशीन बनाम ओएस बनाम कस्टम विकल्पों की एक मेज रखी जो इस प्रक्रिया को perl में मार्गदर्शन करेगी। बोर्न शेल पर्याप्त नहीं था, और हमारे पास सूर्य या एचपी मशीनों पर बैश नहीं है (और उस समय एईक्स पर बैश नहीं था - एईक्स 5 एल अभी तक बाहर नहीं था)। कॉर्न शैल एक विकल्प का अधिक नहीं था, या तो, क्योंकि हमारे अधिकांश लिनक्स बॉक्स में pdksh इंस्टॉल नहीं है। लेकिन, अगर आपको इन सीमाओं का सामना नहीं करना पड़ता है, तो आप सोचते हैं कि इस विचार को ksh या bash में लागू कर सकते हैं।
वैसे भी, मैं मूल रूप से 'rsh $ machine -l $ user "$ cmd" चलाता हूं, जहां $ मशीन, निश्चित रूप से, वह मशीन थी जो मैं लॉग इन कर रहा था, $ उपयोगकर्ता, इसी तरह स्पष्ट (हालांकि जब मैं जा रहा था "रूट" के रूप में इसमें कुछ भिन्नता थी क्योंकि हमारे पास कुछ मशीनों पर कई जड़ें हैं जिन कारणों से मैं पूरी तरह से समझ नहीं पा रहा हूं), और $ cmd मूल रूप से "DISPLAY = $ DISPLAY xterm" था, हालांकि अगर मैं कंसोल लॉन्च कर रहा था, उदाहरण के लिए, $ cmd "कंसोल - डिस्प्ले = $ DISPLAY" होगा। चूंकि $ DISPLAY का मूल्यांकन स्थानीय रूप से किया जा रहा है (जहां यह ठीक से सेट किया गया है), और शाब्दिक रूप से आरएसएस में पारित नहीं किया जा रहा है, इसलिए प्रदर्शन हमेशा सही ढंग से सेट किया जाएगा।
मुझे यह भी सुनिश्चित करना था कि किसी भी ने रीसेट डिस्प्ले की तरह मूर्खतापूर्ण कुछ भी नहीं किया है, अगर यह पहले से सेट हो चुका है।
अब, मैं बस एसएसएच का उपयोग करता हूं, सुनिश्चित करें कि X11Forwarding सर्वर (sshd_config) पर हाँ पर सेट है, और फिर मैं बस मशीन पर ssh कर सकता हूं, एक्स कमांड को एन्क्रिप्टेड तार पर जाने दें, और यह हमेशा सही जगह पर वापस जाओ।
आपके vncserver में कॉन्फ़िगरेशन फ़ाइल है जो प्रदर्शन संख्या सेट करती है। इसे स्वचालित रूप से करने के लिए, एक समाधान इस फ़ाइल को पार्स करना है, संख्या निकालें और इसे सही तरीके से सेट करें।एक सरल (बेहतर) यह डिस्प्ले नंबर कॉन्फ़िगर स्क्रिप्ट में सेट करना है और इसे अपने VNC सर्वर कॉन्फ़िगरेशन और अपनी init स्क्रिप्ट में उपयोग करना है।
यहां कुछ ऐसा है जो मैंने अभी खटखटाया है। यह अंतिम लॉन्च "gnome-session" प्रक्रिया के वातावरण का निरीक्षण करता है (जब VNC ने सत्र/विंडो प्रबंधक लॉन्च किया है तो DISPLAY सही ढंग से सेट किया गया है)। स्टार्टअप पर आपके वीएनसी सर्वर लॉन्च होने वाली किसी भी प्रक्रिया के नाम से "gnome-session" को बदलें।
PID=`pgrep -n -u $USER gnome-session`
if [ -n "$PID" ]; then
export DISPLAY=`awk 'BEGIN{FS="="; RS="\0"} $1=="DISPLAY" {print $2; exit}' /proc/$PID/environ`
echo "DISPLAY set to $DISPLAY"
else
echo "Could not set DISPLAY"
fi
unset PID
आपको बस अपनी .bashrc फ़ाइल में इसे छोड़ने में सक्षम होना चाहिए।
लॉगिन, उपयोगकर्ता स्विच करें और किसी अन्य खाते में लॉगिन करें, पहले खाते पर वापस जाएं और "अंतिम लॉन्च gnome-session" अब सक्रिय नहीं है। – Dima
@Dima अच्छा बिंदु। मैंने वर्तमान उपयोगकर्ता को कम से कम प्रतिबंधित प्रक्रियाओं के लिए अपना उत्तर संशोधित कर दिया है। – Nick
मुझे अपनी अजीब रेखा को बदलना पड़ा: 'निर्यात DISPLAY = $ (बिल्ली/proc/$ पीआईडी / पर्यावरण | तार | awk 'BEGIN {FS =" = ";} $ 1 ==" DISPLAY "{प्रिंट $ 2; निकास} ') ' फिर यह काम किया। – isaaclw
- 1. वर्तमान सत्र
- 2. 'सत्र' वर्तमान संदर्भ
- 3. मैं अपने वर्तमान माहौल के साथ tmux कैसे शुरू करूं?
- 4. अपने वर्तमान मूल्य
- 5. अपने वर्तमान चयन
- 6. मैगेंटो में अपने सत्र सत्र में मूल्य कैसे सहेजूं?
- 7. वर्तमान बैश सत्र को इतिहास में सहेजें
- 8. मैं मैं अपने स्ट्रिंग
- 9. स्प्रिंग और हाइबरनेट: नहीं सत्र वर्तमान थ्रेड के लिए पाया
- 10. मैं अपने ब्लूप्रिंट को पहले_request
- 11. मैं जावास्क्रिप्ट वर्तमान मॉनीटर पर
- 12. वर्तमान सक्रिय सत्र की सभी प्रक्रियाएं प्राप्त करें
- 13. विजुअल स्टूडियो डीबगिंग सत्र के दौरान वर्तमान निर्देशिका ढूँढना?
- 14. सत्र
- 15. 'सत्र' सत्र स्टोर
- 16. मैं अपने एसएसएच सत्र को बंद करने के बाद भी अपने Django सर्वर को कैसे चला सकता हूं?
- 17. मैं भौतिक सत्र के लिए वर्तमान उपयोगकर्ता टोकन कैसे प्राप्त कर सकता हूं?
- 18. मैं क्लाइंट साइड पर वर्तमान उपयोगकर्ता सत्र का प्रबंधन कैसे करूं?
- 19. सत्र
- 20. हैकेल में मैं वर्तमान लोकेल
- 21. मैं अपने webservice
- 22. मैं अपने अमूर्त वर्ग
- 23. मैं अपने ग्रहण
- 24. मैं अपने UITableView
- 25. मैं अपने ग्रिड व्यू
- 26. मैं अपने कोड
- 27. मैं अपने टीएफएस प्रोजेक्ट
- 28. मैं अपने प्रोग्राम
- 29. मैं अपने मणि
- 30. मैं अपने डेस्कटॉप एप्लिकेशन
इस तरह के प्रश्न प्रोग्रामिंग और serverfault.com से ऑपरेटिंग सिस्टम के बारे में अधिक हैं जहां वे जाते हैं। – SpliFF
ऐसा लगता है जब vncserver प्रारंभ होता है, DISPLAY चर स्वचालित रूप से नए vnc सत्र में सेट होता है, कम से कम यह मेरे लिए काम करता है। –
आपको यह वर्णन करना चाहिए कि आप किस मशीन में लॉग इन कर रहे हैं, और जहां वीएनसी सर्वर चल रहे हैं। Vncserver वातावरण में बनाए गए किसी भी गोले में पहले से ही सही DISPLAY चर होगा। ऐसा लगता है कि आप रिमोट होस्ट में रिमोट लॉगिंग कर रहे हैं और पहले से चल रहे एक्स सर्वर पर ऐप्स शुरू करने का प्रयास कर रहे हैं। आपकी लॉगिन स्क्रिप्ट नहीं जानता कि कौन सा वीएनसी सर्वर इसे हमारे से कहीं ज्यादा कनेक्ट करना चाहिए। – codeDr