Maneira correta de iniciar o xvfb na inicialização no centos?

11

Estou seguindo este tutorial e quero conhecer a versão centos equivalente desta etapa específica do 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

Qual é a maneira correta de iniciar o xvfb na inicialização do centos?

Stefan Kendall
fonte

Respostas:

12

Eu uso o seguinte script init para adicionar e iniciar o xvfb na inicialização, apenas coloque isso em /etc/init.d/ e execute chkconfig xvfb em

   #!/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
Tacticus
fonte
1
não esqueça adicionar permissão de execução para este arquivo: chmod + x xvfb
panchicore
2
Embora sua pergunta tenha sido feita para o CentOS, ela se tornou útil para outras distribuições também. Isso funciona bem no Ubuntu; você só precisa correr em update-rc.dvez de chkconfig. Veja esta resposta para obter mais informações sobre update-rc.d.
sigpwned
1
A questão era sobre como fazê-lo no CentOS. O atual CentOS usa systemd, e esta resposta não resolve a questão. A resposta do JdeBP é mais apropriada.
Yoichi
Considerando que a pergunta foi feita há 6 anos, quando a versão atual do centos não existia (nem o systemd iirc). A solução systemd, porém, é muito mais agradável e deve ser a opção preferida quando possível.
Tacticus 11/11
19

E agora, o sistema responde.

Já se passaram quase quatro anos desde essas perguntas e respostas, e o mundo mudou enquanto elas não mudaram. Desde a versão 7, o CentOS usa o systemd. O Ubuntu é mencionado na pergunta e nos comentários. Desde a versão 15, o Ubuntu também usou o systemd.

Embora se possa usar os rcscripts do Sistema 5 no systemd, os scripts nas respostas aqui são altamente abaixo do ideal, para dizer o mínimo. Utiliza-se alegremente killall, cujos problemas para o gerenciamento de daemon são bem conhecidos; e a outra é uma bagunça de arquivos de bloqueio precários e lógica de arquivos PID, nenhum dos quais é realmente necessário em um gerenciador de serviços, uma vez que os próprios gerenciadores de serviços mantêm o controle dos processos comuns.

Como já disse em outro lugar, se você está começando a aprender essas coisas e está no CentOS Linux versão 7 ou posterior ou Ubuntu Linux versão 15 ou posterior, não comece com os rcscripts do Sistema 5 em primeiro lugar. Comece com os arquivos da unidade systemd.

um modelo para vários serviços Xvfb

xvfb.serviceArquivos simples de unidade systemd para xvfb podem ser encontrados em https://www.centos.org/forums/viewtopic.php?f=48&t=49080#p208363 e em /ubuntu//a/621256/43344 . No entanto, como mencionei no último, também é possível adotar uma abordagem de modelos:

[Unidade]
Descrição = servidor X do buffer de quadro virtual para exibição% I
Depois = network.target

[Serviço]
ExecStart = / usr / bin / Xvfb% I - tela 0 1280x1024x24

[Instalar]
WantedBy = multi-user.target

Como um arquivo de unidade gravado localmente, sem sistema e não empacotado para serviços em todo o sistema (em oposição a por usuário), isso é /etc/systemd/system/[email protected]óbvio.

controlando os serviços

Um instancia o modelo, em um serviço nomeado real, com o número de exibição desejado. Para exibição :99, portanto, há uma instância de serviço real nomeada xvfb@:99.service.

  • Defina o serviço para iniciar automaticamente no bootstrap com systemctl enable xvfb@:99.service.
  • Desative o início automático do serviço com systemctl disable xvfb@:99.service.
  • Inicie o serviço manualmente com systemctl start xvfb@:99.service.
  • Pare o serviço manualmente com systemctl stop xvfb@:99.service.
  • Inspecione o status atual do serviço em detalhes com systemctl status xvfb@:99.service.

Leitura adicional

JdeBP
fonte
o link para "Adicionando xvfb aos serviços do sistema" está morto.
Manish
A pergunta do superusuário mencionada foi excluída automaticamente. Felizmente, o interlocutor o publicou várias vezes. ☺
JdeBP
4

Aqui está um bom script de inicialização para fazer isso:

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

O 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

Salve o script como xvfbd e copie-o para /etc/init.d, em seguida, execute o seguinte comando:

sudo chkconfig --add xvfbd
Thilo
fonte
1

A maneira mais simples é adicionar a seguinte linha no /etc/rc.localarquivo (crie uma se não estiver lá):

Xvfb :0 -screen 0 1024x768x16 &

para iniciar o X virtual framebuffer na inicialização.

kenorb
fonte
-2

Você pode usar uma maneira mais fácil se precisar iniciar ou iniciar algo na inicialização do computador.

No Redhat / CentOS, adicione sua linha de script neste arquivo: /etc/rc.d/rc.local

tryp
fonte
Eu não downvote você, mas eu acho que isso só trabalhou para o Sistema de V.
Donato
Eu tentei isso em um sistema CentOS 7 de baunilha hoje (porque sou preguiçoso) e funcionou, lançando o Xvfb.
clusterdude