supervise / daemontools está em conflito com o apache -D FOREGROUND

1

Esperando que alguém possa nos ajudar a entender esse comportamento.

Nós temos um monte de serviços daemontools em / etc / service /. Um dos serviços controla o apache, e o script de execução contém isso.

exec envdir /var/lib/supervise/wwwproxy/env setuidgid root bash <<-BASH
    ulimit -n 8192  # also increase the running user's file descriptor limit
    exec apache2 -f /path/to/demo_apache2.conf -D FOREGROUND
BASH 

Estávamos com o problema de que svc -d /etc/service/* realmente teve o efeito de reiniciar todos os serviços, mas não os desativou. Finalmente, rastreamos esse serviço e descobrimos que svc -d /etc/service/apache2 traria para cima qualquer outro serviço, incluindo ele mesmo.

Alterar o FOREGROUND para NO_DAEMONIZE resolve o comportamento, mas gostaríamos muito de entender o que está acontecendo. Alguém pode explicar por que um serviço svc -d on one traria um serviço outro ?

Obrigado por qualquer pista que você possa oferecer.

    
por Kevin G. 15.08.2012 / 02:41

2 respostas

2

Para mim, -D NO_DAEMONIZE não funcionou, tive que usar -D NO_DETACH . (CentOS 6.3, Apache / 2.2.15)

Veja também o link :

Also can be used to set certain less-common startup parameters including -DNO_DETACH (prevent the parent from forking) and -DFOREGROUND (prevent the parent from calling setsid() et al).

    
por 07.11.2012 / 11:48
1

Minha sugestão seria não usar daemontools para executar o Apache , mas em vez disso você deve simplificar seu script de execução.

Comece com os mínimos mínimos:

#!/bin/bash
exec apache2 -f /path/to/httpd.conf -D NO_DAEMONIZE

Se você precisar / quiser usar envdir , poderá iniciar o apache com isso em vez de exec .
A chamada ulimit provavelmente não é necessária, mas pode ser adicionada em qualquer lugar no script de execução antes de você iniciar o Apache.

Re: o comportamento estranho que você está vendo, são algumas diferenças funcionais entre -DFOREGROUND e -DNO_DAEMONIZE - o último é o que sempre vi recomendado para executar o Apache em daemontools (precedido pelo obrigatório "Don't Do That") - Eu não sei porque qualquer uma dessas diferenças causaria o comportamento que você descreveu.

    
por 15.08.2012 / 05:07