Solaris SMF mata o serviço porque a criança morre

6

Estou usando o SMF para gerenciar um serviço no Solaris10.

Este serviço é, ele próprio, um gerenciador de processos, e separa muitos processos filhos, alguns dos quais morrem ocasionalmente (ou são mortos por várias razões). O processo de serviço em si é muito robusto e nunca morre no entanto.

O problema que tenho é que quando eu mato manualmente um desses processos filhos usando o sinal KILL, o SMF irá reiniciar o serviço principal:

[ Aug 27 08:07:06 Stopping because process received fatal signal from outside the service. ]

Existe uma maneira de configurar o SMF ou o manifesto de serviço de modo que o SMF não mate o serviço se um dos subprocessos do serviço for eliminado?

TIA

    
por aaa90210 27.08.2010 / 00:17

3 respostas

5

Você precisa definir o seguinte no seu manifesto:

<property_group name='startd' type='framework'>
    <!-- sub-process core dumps shouldn't restart session -->
    <propval name='ignore_error' type='astring' value='core,signal' />
</property_group>

Ou você pode fazer isso imediatamente:

svccfg -s svc:/your/service:default
svccfg> setprop startd/ignore_error = astring:"core,signal"
svccfg> ^D
    
por 27.08.2010 / 06:41
3

Eu tive o mesmo problema agora e consegui resolvê-lo alterando o próprio processo de serviço para iniciar os childs dentro de /usr/sbin/ctrun -l child <command-and-arguments> . O próprio manifesto usa o modelo de serviço "filho".

Veja contract(4) e ctrun(1) para detalhes.

    
por 29.03.2013 / 10:49
1

Se você tentar o método on the fly e obter Nenhum grupo de propriedades como 'startd' precisará adicionar a propriedade primeiro.

svccfg -s svc:/your/service:default
svccfg> addpg startd framework
svccfg> setprop startd/ignore_error = astring:"core,signal"
svccfg> ^D
    
por 02.12.2013 / 19:35

Tags