Centos'ta başlangıçta xvfb'yi başlatmanın doğru yolu?


10

Bu öğreticiyi takip ediyorum ve bu ubuntu'ya özgü adımın eşdeğer centos versiyonunu bilmek istiyorum:

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

Xvfb'yi centos'ta başlangıçta başlatmanın doğru yolu nedir?

Yanıtlar:


12

/ İnc/init.d/ dizinindeki xvfb'yi başlatmak ve başlatmak için aşağıdaki init betiğini kullanıyorum ve chkconfig xvfb'yi çalıştırın.

   #!/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
Bu dosyaya yürütme izni eklemeyi unutma: chmod + x xvfb
panchicore

2
Sorusu CentOS'a yöneltilse de, diğer dağıtımlar için de faydalı olmuştur. Bu Ubuntu'da iyi çalışır; senin update-rc.dyerine koşman yeterli chkconfig. Hakkında daha fazla bilgi için bu cevaba bakınız update-rc.d.
13'te

1
Soru, CentOS'ta nasıl yapılacağıyla ilgiliydi. Mevcut CentOS systemd kullanır ve bu cevap soruyu çözmez. JdeBP'den gelen cevap daha uygundur.
Yoichi

Sorunun 6 yıl önce, şu andaki centos versiyonunun olmadığı (ya da systemir iirc olmadığı) sorulmuştu. Sistem çözümü çok daha güzel ve mümkün olduğunda tercih edilen seçenek olmalı.
Tacticus

18

Ve şimdi, sistem cevap veriyor.

Bu soru ve cevaplardan bu yana neredeyse dört yıl geçti ve olmasa da dünya değişti. Sürüm 7'den bu yana, CentOS systemd'yi kullandı. Ubuntu soruda ve yorumlarda belirtilmiştir. 15 sürümünden bu yana, Ubuntu da systemd kullandı.

Sistem 5 rcaltında System 5 betiklerini kullanabilmekle birlikte , buradaki yanıtlardaki scriptler en düşük seviyededir. killallDæmon yönetimi için problemleri iyi bilinen, çok dikkatli bir şekilde kullanan ; ve diğer çürük kilit dosyası ve PID dosya mantık bir karmaşa hiçbiri servis yöneticileri beri, bir hizmet yöneticisinin altında aslında gerekli olduğu kendileri Daemon süreçlerinin takip edebilirsiniz.

Başka bir yerde söylediğim gibi, bu şeyleri öğrenmeye başlıyorsanız ve CentOS Linux sürüm 7 veya üstü veya Ubuntu Linux sürüm 15 veya üstü rcsürümdeyseniz, ilk olarak Sistem 5 komut dizileriyle başlamayın . Sistem birimi dosyaları ile başlayın.

çoklu Xvfb servisleri için bir şablon

xvfb.serviceXvfb için basit sistem birimi dosyaları https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 adresinde ve https://askubuntu.com/a/621256/43344 adresinde bulunabilir . Bununla birlikte, ikincisinden de bahsettiğim gibi, temkinli bir yaklaşım da alabilir:

[Birim]
Açıklama =% I görüntüleme için sanal çerçeve arabelleği X sunucusu
= Network.target sonra

[Hizmet]
ExecStart = / usr / bin / Xvfb% I-ekranı 0 1280x1024x24

[Yükleme]
WantedBy = multi-user.target

Yerel olarak yazılmış, sistem dışı, paketlenmemiş, sistem genelinde (kullanıcı başına değil) servisler için kullanılan birimler olarak /etc/systemd/system/xvfb@.servicetabiki.

hizmetleri kontrol etmek

Biri, istenen görüntü numarasıyla, şablonu adlandırılmış bir gerçek hizmete başlatır. Bu :99nedenle, görüntüleme için , adında gerçek bir servis örneği vardır xvfb@:99.service.

  • Hizmeti önyükleme sırasında otomatik olarak başlatılacak şekilde ayarlayın systemctl enable xvfb@:99.service.
  • Hizmetin otomatik olarak başlatılmasını ayarlayın systemctl disable xvfb@:99.service.
  • Hizmeti el ile başlatın systemctl start xvfb@:99.service.
  • Hizmeti elle durdurun systemctl stop xvfb@:99.service.
  • Mevcut servis durumunu ile detaylı olarak inceleyin systemctl status xvfb@:99.service.

daha fazla okuma


"xvfb'yi sistem hizmetlerine ekleme" bağlantısı kesildi.
Manish

Başvurulan Süper Kullanıcı sorusu o zamandan beri otomatik olarak silindi. Neyse ki, sorgulayıcı çok yolladı. ☺
JdeBP

4

İşte bunu başarmak için güzel bir init betiği:

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

Betik:

#!/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

Komut dosyasını xvfbd olarak kaydedin ve komut dosyasını kopyalayın /etc/init.d, ardından aşağıdaki komutu çalıştırın:

sudo chkconfig --add xvfbd

1

En basit yöntem, aşağıdaki satırı /etc/rc.localdosyaya eklemektir (eğer yoksa bir tane oluşturun):

Xvfb :0 -screen 0 1024x768x16 &

X sanal framebuffer'ı açılışta başlatmak için.


-2

Bilgisayarın önyüklemesinde bir şeyi başlatmanız veya başlatmanız gerekirse, daha kolay bir yol kullanabilirsiniz.

Redhat / CentOS'ta, komut satırınızı bu dosyaya ekleyin: /etc/rc.d/rc.local


Sana downvote yoktu, ama ben bu sadece Sistem V için çalıştı düşünüyorum
Donato

Bunu bugün vanilya CentOS 7 sisteminde denedim (çünkü tembelim) ve işe yaradı, Xvfb'yi başlattı.
clusterdude
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.