Iniciando um serviço durante a inicialização

7

Eu criei um serviço para um aplicativo e quero que esse aplicativo seja iniciado na inicialização. No manifesto de serviço, percebo que há uma propriedade para isso (enabled="true"), mas tenho evitado isso por um aspecto particularmente irritante:

A importação faz parte de um script. Ter o serviço como "ativado" significa que ele será reiniciado na importação. O problema é que não tenho certeza de como esperar até que o processo seja ativado antes de continuar. Então, o que eu faço no script é importar com o conjunto ativado como "false", então execute "svcadm enable -s <service> ".

Então, eu queria saber se alguém tinha alguma resposta para qualquer uma dessas perguntas:

  1. Como você faz um serviço existente iniciar na inicialização (esperamos evitar adições manuais ao rc3.d)?
  2. Como você faz com que a importação de svccfg aguarde até que um serviço seja completamente ativado antes de continuar?
  3. Existe uma maneira elegante de esperar até que um serviço seja iniciado antes de continuar (evitando o grepping manual para ativado em um loop)?

Obrigado.

    
por noisesolo 30.05.2011 / 17:53

2 respostas

0

Vou tentar responder às suas perguntas sobre o Solaris SMF ...

  1. Para iniciar um serviço no momento da inicialização, você deve ativar o serviço com

    # svcadm enable FRMI
    

    Por exemplo, para habilitar o serviço "ipfilter" você precisa fazer

    # svcadm enable ipfilter
    

    Isso será ativado no marco atual, portanto, não é necessário fazer alterações no /etc/rcX.d directory

  2. Eu não entendo porque você precisa do processo de importação para esperar algum outro frmi, mas, geralmente eu importo o "manifesto" e depois disso coloco on-line com svcadm , por exemplo

    # svccfg validate MANIFEST
    # svcadm enable FRMI
    
  3. Para esperar outro frmi, você pode usar a opção "dependency" dentro do manifesto, como você pode ver aqui

    <dependency
        name='filesystem-local'
        grouping='require_all'
        restart_on='none'
        type='service'>
        <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>
    

Eu tenho muitos exemplos sobre como instalar e usar o Solaris SMF no meu Blog (em espanhol), mas, por exemplo, aqui você pode ver um exemplo, Como instalar o PostgreSQL 9.0.3 no OpenIndiana ou Como instalar o Apache Tomcat usando o RBAC e o SMF no OpenIndiana

    
por 31.05.2011 / 23:04
0

Talvez você possa resolver isso tornando seu serviço dependente de outro serviço ainda não ativado.

    
por 31.05.2011 / 14:59