सेंटो पर स्टार्टअप पर xvfb शुरू करने का उचित तरीका?


11

मैं इस ट्यूटोरियल का अनुसरण कर रहा हूं , और मैं इस ubuntu- विशिष्ट चरण के बराबर सेंटोस-संस्करण को जानना चाहता हूं:

You may receive a few warnings regarding fonts and such, but it’ll still work despite these. If you want the framebuffer to start automatically on system startup you can do:
sudo update-rc.d xvfb defaults 10

सेंटो पर स्टार्टअप पर xffb शुरू करने का उचित तरीका क्या है?

जवाबों:


12

मैं बूट करने के लिए xvfb को शुरू करने के लिए निम्नलिखित init स्क्रिप्ट का उपयोग करता हूं और केवल / blc/init.d/ में बूट करने के लिए chkconfig xvfb को चलाता हूं

   #!/bin/bash
   #chkconfig: 345 95 50
   #description: Starts xvfb on display 99
   if [ -z "$1" ]; then
   echo "`basename $0` {start|stop}"
       exit
   fi

   case "$1" in
   start)
       /usr/bin/Xvfb :99 -screen 0 1280x1024x24 &
   ;;

   stop)
       killall Xvfb
   ;;
   esac

1
इस फ़ाइल में निष्पादन की अनुमति न भूलें: chmod + x xvfb
panchicore

2
भले ही उसका सवाल सेंटोस के लिए रखा गया था, यह अन्य वितरणों के लिए भी उपयोगी हो गया है। यह उबंटू पर अच्छी तरह से काम करता है; आपको update-rc.dइसके बजाय बस चलाने की आवश्यकता है chkconfig। अधिक जानकारी के लिए इस उत्तर को देखें update-rc.d
सिगव्व्ड

1
सवाल यह था कि इसे CentOS पर कैसे किया जाए। वर्तमान CentOS systemd का उपयोग करता है, और यह उत्तर प्रश्न को हल नहीं करता है। JdeBP का उत्तर अधिक उपयुक्त है।
योइची

प्रश्न पर विचार करते हुए 6 साल पहले पूछा गया था जब सेंटोस का वर्तमान संस्करण मौजूद नहीं था (और न ही सिस्टमड आईसरैक)। प्रणालीगत समाधान हालांकि बहुत अच्छा है और संभव होने पर पसंदीदा विकल्प होना चाहिए।
टैक्टिकस ऑक्ट

19

और अब, systemd जवाब।

इन सवालों और जवाबों को लगभग चार साल हो गए हैं, और दुनिया बदल गई है जबकि वे नहीं हैं। संस्करण 7 के बाद से, CentOS ने सिस्टमड का उपयोग किया है। उबंटू का उल्लेख प्रश्न और टिप्पणियों में किया गया है। संस्करण 15 के बाद से, Ubuntu ने सिस्टमड का भी उपयोग किया है।

हालाँकि, सिस्टम 5 के rcतहत सिस्टम 5 लिपियों का उपयोग किया जा सकता है , यहाँ उत्तर में लिपियाँ बहुत ही कम हैं, यह कहने के लिए बहुत उप-स्तरीय है। एक blithely उपयोग करता है killall, जिसकी ditmon प्रबंधन के लिए समस्याएं अच्छी तरह से जानी जाती हैं; और दूसरा रिकेटिक लॉक फाइल और पीआईडी ​​फाइल लॉजिक की गड़बड़ी है जिसमें से कोई भी वास्तव में एक सेवा प्रबंधक के तहत आवश्यक नहीं है, क्योंकि सेवा प्रबंधक स्वयं dæmon प्रक्रियाओं का ट्रैक रखते हैं।

जैसा कि मैंने अन्यत्र कहा है, यदि आप इस सामान को सीखना शुरू कर रहे हैं और CentOS Linux संस्करण later या उसके बाद के या उबंटू लिनक्स संस्करण १५ या उसके बाद के हैं, तो rcपहले स्थान पर सिस्टम ५ स्क्रिप्ट से शुरू न करें । Systemd इकाई फ़ाइलों के साथ शुरू करें।

कई Xvfb सेवाओं के लिए एक टेम्पलेट

सरल xvfb.servicexvfb के लिए systemd इकाई फ़ाइलों में पाया जा सकता https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 और कम से https://askubuntu.com/a/621256/43344 । हालांकि, जैसा कि मैंने उत्तरार्द्ध में उल्लेख किया है, एक टेम्पलेटेड दृष्टिकोण भी ले सकता है:

[यूनिट]
विवरण = प्रदर्शन% I के लिए वर्चुअल फ्रेम बफर एक्स सर्वर
= Network.target के बाद

[सर्विस]
ExecStart = / usr / bin / Xvfb% I-स्क्रीन 0 1280x1024x24

[इंस्टॉल]
WantedBy = multi-user.target

स्थानीय रूप से लिखित, गैर-सिस्टम गैर-पैकेज्ड के रूप में, सिस्टम-वाइड (प्रति उपयोगकर्ता के विपरीत) सेवाओं के लिए यूनिट फ़ाइल यह /etc/systemd/system/xvfb@.serviceनिश्चित रूप से जाती है।

सेवाओं को नियंत्रित करना

एक टेम्पलेट को वास्तविक नाम सेवा में, वांछित संख्या के साथ प्रदर्शित करता है। प्रदर्शन के लिए :99, इसलिए, नाम का एक वास्तविक सेवा उदाहरण है xvfb@:99.service

  • सेवा को बूटस्ट्रैप पर ऑटो-स्टार्ट के साथ सेट करें systemctl enable xvfb@:99.service
  • के साथ सेवा को शुरू करने की शुरुआत न करें systemctl disable xvfb@:99.service
  • सेवा को मैन्युअल रूप से प्रारंभ करें systemctl start xvfb@:99.service
  • सेवा को मैन्युअल रूप से बंद करें systemctl stop xvfb@:99.service
  • वर्तमान सेवा की स्थिति का विस्तार से निरीक्षण करें systemctl status xvfb@:99.service

आगे की पढाई


"xvfb को सिस्टम सेवाओं में जोड़ना" के लिए लिंक मृत है।
मनीष

सुपरयूजर प्रश्न को संदर्भित किया गया है क्योंकि यह स्वतः हटा दिया गया है। सौभाग्य से, प्रश्नकर्ता ने इसे पोस्ट किया। B
जेडीबीपी

4

इसे पूरा करने के लिए एक अच्छी इनिट स्क्रिप्ट यहां दी गई है:

http://onemoretech.wordpress.com/2009/05/27/an-xvfb-init-script/

स्क्रिप्ट है:

#!/bin/bash
#
# /etc/rc.d/init.d/xvfbd
#
# chkconfig: 345 95 28
# description: Starts/Stops X Virtual Framebuffer server
# processname: Xvfb
#

. /etc/init.d/functions

[ "${NETWORKING}" = "no" ] && exit 0

PROG="/usr/X11R6/bin/Xvfb"
PROG_OPTIONS=":5 -screen 0 640x480x24"
PROG_OUTPUT="/tmp/Xvfb.out"

case "$1" in
    start)
        echo -n "Starting : X Virtual Frame Buffer "
        $PROG $PROG_OPTIONS>>$PROG_OUTPUT 2>&1 &
        disown -ar
        /bin/usleep 500000
        status Xvfb & >/dev/null && echo_success || echo_failure
        RETVAL=$?
        if [ $RETVAL -eq 0 ]; then
            /bin/touch /var/lock/subsys/Xvfb
            /sbin/pidof -o  %PPID -x Xvfb > /var/run/Xvfb.pid
        fi
        echo
        ;;
    stop)
        echo -n "Shutting down : X Virtual Frame Buffer"
        killproc $PROG
        RETVAL=$?
        [ $RETVAL -eq 0 ] && /bin/rm -f /var/lock/subsys/Xvfb
 /var/run/Xvfb.pid
        echo
        ;;
    restart|reload)
        $0 stop
        $0 start
        RETVAL=$?
        ;;
    status)
        status Xvfb
        RETVAL=$?
        ;;
    *)
     echo $"Usage: $0 (start|stop|restart|reload|status)"
     exit 1
esac

exit $RETVAL

स्क्रिप्ट को xvfbd के रूप में सहेजें और स्क्रिप्ट को कॉपी करें /etc/init.d, फिर निम्न कमांड चलाएँ:

sudo chkconfig --add xvfbd

1

सबसे सरल तरीका निम्न लाइन को /etc/rc.localफ़ाइल में जोड़ना है (यदि ऐसा नहीं है तो एक बनाएं):

Xvfb :0 -screen 0 1024x768x16 &

बूट पर एक्स वर्चुअल फ्रेमबफ़र शुरू करने के लिए।


-2

अगर आपको कंप्यूटर बूट पर कुछ शुरू करने या लॉन्च करने की आवश्यकता है, तो आप अधिक आसान तरीके का उपयोग कर सकते हैं।

Redhat / CentOS पर, इस फ़ाइल पर अपनी स्क्रिप्ट लाइन जोड़ें: /etc/rc.d/rc.local


मैंने आपको निराश नहीं किया, लेकिन मुझे लगता है कि यह केवल सिस्टम वी के लिए काम करता है
डोनटो

मैंने आज एक वेनिला CentOS 7 सिस्टम पर यह कोशिश की (क्योंकि मैं आलसी हूँ), और इसने काम किया, Xvfb को लॉन्च करना।
क्लेड्यूड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.