web-dev-qa-db-fra.com

Une bonne façon de démarrer XVFB au démarrage sur Centos?

Je suive ce tutoriel , et je veux connaître la version équivalente Centos-Version de cette étape spécifique à 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

Quelle est la bonne façon de démarrer XVFB au démarrage sur Centos?

11
Stefan Kendall

J'utilise le script Init suivant pour ajouter et démarrer XVFB sur le démarrage simplement blat que dans /etc/init.d/ et exécuter chkconfig xvfb sur

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

Et maintenant, la solution SystemD.

Cela fait presque quatre ans que ces questions et réponses, et le monde a changé alors qu'ils ne l'ont pas. Depuis la version 7, Centos a utilisé SystemD. Ubuntu est mentionné dans la question et dans les commentaires. Depuis la version 15, Ubuntu a également utilisé SystemD.

Bien que l'on puisse utiliser le système 5 rc scripts sous SystemD, les scripts des réponses ici sont hautement sous-optimal, pour le moins. On utilise allègrement killall, dont les problèmes de gestion de Dæmon sont bien connus; Et l'autre est un gâchis de fichiers de verrouillage et de logique de fichier PID rickty Aucun est réellement nécessaire sous un gestionnaire de services, car les gestionnaires de services eux-mêmes Gardez une trace des processus Dæmon.

Comme je l'ai dit ailleurs, si vous commencez à apprendre ces affaires et que vous êtes sur Centos Linux version 7 ou ultérieure ou Ubuntu Linux version 15 ou ultérieure, ne commencez pas avec le système 5 rc scripts en premier lieu. . Commencez par les fichiers de l'unité SystemD.

un modèle pour plusieurs services XVFB

Simple xvfb.service Les fichiers de l'unité SystemD pour XVFB peuvent être trouvés à https://www.centos.org/forums/viewtopic.php?f=48&t=49080#P20836 et à https://askubuntu.com/a/621256/43344 . Cependant, comme je l'ai mentionné à ce dernier, vous pouvez également adopter une approche modélisée:

 [Unité] 
 Description = Server de tampon de cadre virtuel X pour afficher% I 
 Après = Network.Target [. ____] [ .] Exécutant =/usr/bin/xvfb% i -rscreen 0 1280x1024x24 [.____] 
 [installer] [

En tant que fichier unitaire non emballé à l'échelle locale, non système non emballé pour les services du système (par opposition aux utilisateurs), cela entre en /etc/systemd/system/[email protected] bien sûr.

contrôler les services

On instatit le modèle dans un service nommé réel, avec le numéro d'affichage souhaité. Pour afficher :99, donc, il y a une instance de service réelle nommée xvfb@:99.service.

  • Définissez le service sur le démarrage automatique sur bootstrap avec systemctl enable xvfb@:99.service.
  • Désango-démarrage automatique du service avec systemctl disable xvfb@:99.service.
  • Commencez le service manuellement avec systemctl start xvfb@:99.service.
  • Arrêtez le service manuellement avec systemctl stop xvfb@:99.service.
  • Inspectez le statut de service actuel en détail avec systemctl status xvfb@:99.service.

En plus de lecture

19
JdeBP

Voici un bon script Init pour accomplir ceci:

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

Le script est:

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

Enregistrez le script sous XVFBD et copiez le script sur /etc/init.d, puis exécutez la commande suivante:

Sudo chkconfig --add xvfbd
4
Thilo

Le moyen le plus simple est d'ajouter la ligne suivante dans /etc/rc.local Fichier (Créez-en un si ce n'est pas là):

Xvfb :0 -screen 0 1024x768x16 &

pour lancer x Cadre virtuel sur le démarrage.

1
kenorb