O daemon não pode ser iniciado a partir do script fabric ou durante a inicialização - somente interativamente

4

Eu tenho um script daemon em /etc/init.d que executa alguns logging de pacotes em segundo plano usando o comando tcpdump . O script é iniciado usando um shell interativo usando sudo /etc/init.d/packetlog start

Quando executo o mesmo comando através do meu script de malha (abaixo), o comando retorna com sucesso, mas o processo não está em execução.

def startpacketlog():
    sudo(r'/etc/init.d/packetlog start')

Além disso, o serviço não é iniciado automaticamente na inicialização, como eu esperava.

Algumas dicas para solucionar isso seriam bem-vindas

O script é aqui e é modificado a partir deste original

Atualizar Este parece ser um problema geral ao iniciar qualquer serviço neste host usando o fabric. Ao iniciar o serviço apache2, recebo o mesmo problema. Eu posso parar o serviço usando o tecido com sucesso embora.

Atualização 2 Depois de reler a documentação e algumas experiências, a seguinte alteração corrigiu o problema. (Isso desativa o pseudo-terminal remoto, o que quer que seja)

def startpacketlog():
    sudo(r'/etc/init.d/packetlog start',pty=False)
    
por rupello 17.05.2011 / 18:06

1 resposta

3

Quando você invoca um script de inicialização diretamente, seu ambiente atual pode "vazar" para o script de inicialização.

Teste seu script de inicialização usando as ferramentas de sistema apropriadas:

# Redhat/CentOS, and Ubuntu with upstart
sudo service packetlog start

# traditional method on Debian/Ubuntu 
sudo invoke-rc.d packetlog start

Isso fará com que o script esteja iniciando em um ambiente limpo, idêntico ao que seria quando iniciado pelo init.

    
por 17.05.2011 / 20:45