Como definir um binário para o init na inicialização, como o Apache faz (executado como um serviço)

2

Estou tentando configurar o PhantomJS para ser executado como um serviço. Eu encontrei o arquivo de esqueleto em /etc/init.d e estou executando no Ubuntu 12.10. Ao tentar descobrir isso, encontrei os links simbólicos nos diretórios /etc/rc*.d e descobri que o Apache é executado nos níveis de execução de 2 a 5.

A minha pergunta é que acabei de criar um link simbólico chamado S02phantomjs nas pastas de 2 a 5 e aponte para o script que eu coloquei em /etc/init.d? Ou devo usar algum aplicativo para configurar isso?

Minha preocupação é que estou perdendo alguma coisa. E que a ordem na porção numérica tem uma importância significativa que eu não quero mexer.

Além disso, não tenho certeza se há mais alguma coisa a fazer para não apenas garantir que isso seja executado em todas as inicializações. Mas comece a correr agora.

Uma última pergunta. Meu script, baseado no esqueleto, quando eu o executo no terminal, ele apenas fica e espera como quando eu executo o PhantomJS normalmente. Eu gostaria de fazê-lo funcionar apenas em segundo plano, como o Apache. O que tenho que fazer de diferente para conseguir isso?

Obrigado a todos!

    
por pthurmond 14.06.2013 / 22:24

2 respostas

1

Como o PhantomJS não oferece nenhum suporte para executar daemons fora da caixa , você deve cuide do seu serviço sozinho. É ótimo que você tenha encontrado /etc/init.d/skeleton e usado para criar um script de inicialização. O que você descreve mostra que seu processo não está entrando em segundo plano e isso pode ser corrigido por meio de algum wrapper. Isso pode ser start-stop-daemon , que é específico para distribuições baseadas no Debian, ou um pacote daemon separado que pode redirecionar stdin / stdout e lidar com situações adicionais.

Como tenho quase certeza de que você usa a maneira tradicional de escrever scripts de init, eu suspeito que você possa apenas adicionar --background ao seu comando start-stop-daemon.

Quando você terminar de corrigir seu script, verifique se ele pertence a root:root com permissões 0755 (por exemplo, rwxr-xr-x ). Depois disso, atualize os links simbólicos sysvinit com o comando update-rc.d fornecido por Michael Hampton em sua resposta.

Assim como uma nota, existem algumas outras ferramentas que suportam o processo de envio para segundo plano e podem ser úteis em outros casos. Por exemplo, supervisor , upstart e systemd suportam isso. Por favor, consulte a documentação para obter a sintaxe exata. Se você for usar um desses, não é necessário escrever script de inicialização completo.

Claro, scripts init são a maneira mais antiga e mais suportada de iniciar daemons.

    
por 15.06.2013 / 00:34
1

Se o script de inicialização já estiver lá e estiver escrito corretamente, será suficiente ativá-lo normalmente, como qualquer outro script de inicialização:

update-rc.d phantomjs defaults

ou (12,04 +)

update-rc.d phantomjs enable

(Isso geralmente é feito por padrão quando você instala pacotes com apt-get e seus primos ...)

    
por 14.06.2013 / 22:26