Daemon multiplataforma / service stop e start

0

Existe uma ferramenta que pode controlar daemons / serviços de maneira multiplataforma?

Na programação, existem diferentes ferramentas de construção que permitem construir software a partir de fontes em diferentes plataformas; a ferramenta cuidará de detectar os recursos da máquina em particular e localizará bibliotecas, compiladores, etc. CMake é um exemplo.

Existe um problema semelhante no controle do daemon. Dependendo do sistema operacional, se eu quiser iniciar um daemon, eu posso usar

stop-start-daemon -S mydaemon

ou talvez chame um script como

/etc/init.d/mydaemon start

ou se systemctl for a ferramenta escolhida,

systemctl start mydaemon

E se eu estiver no Windows, eu posso usar net start myservice ou sc start myservice .

Existe uma ferramenta, script ou outro método canônico para lidar com esse cenário? Eu não preciso de controle refinado; basta parar e começar, mas gostaria de poder implantar meu próprio software em vários sistemas usando o mesmo script.

    
por Anthony 17.12.2013 / 07:39

2 respostas

3

Para responder diretamente à sua pergunta: não, não há uma maneira cruzada de iniciar / parar / controlar daemons.

Para responder indiretamente à sua pergunta: a forma típica de lidar com esse tipo de funcionalidade é em seu programa e instaladores (makefiles / build files / msi packages / zips).

Se eu tiver um programa daemonized que estou construindo (um programa que deve ser executado em segundo plano ou como um serviço), eu construo manualmente os scripts 'start / stop' (com alguma cópia / colagem útil) e então feche o código-fonte ou o binário pré-compilado com a plataforma do script de controle de opções que é então chamado da mesma maneira em cada plataforma (por exemplo, myservice -start ou myservice -stop , etc., etc.).

    
por 17.12.2013 / 09:20
0

Precisando disso para os meus próprios produtos de software, decidi escrevê-lo:

link

Não é uma solução perfeita, pois cada plataforma precisa de seu próprio binário pré-compilado. No entanto, a interface é muito mais consistente do que a que temos no momento. O Service Manager é provavelmente melhor usado como uma ferramenta de implantação de serviço entre plataformas, que atende à sua última necessidade de implantar seu próprio software, em vez de uma ferramenta geral de iniciar / parar. Ou seja, você escreve algum código que deseja transformar em um serviço do sistema e torna mais fácil e confiável implantá-lo em outras máquinas, independentemente do SO.

No entanto, ele também pode ser usado para iniciar / interromper outros serviços ativados pelo Service Manager. Portanto, enquanto todos os serviços que você deseja controlar estiverem sendo executados no Service Manager, você poderá usar uma única ferramenta para iniciar e interromper esses serviços.

    
por 01.06.2016 / 16:57