UTILIZANDO daemontools djb – linux

daemontools é uma coleção de ferramentas para gerenciar serviços UNIX.

Supervisor monitora um serviço. Ele inicia o serviço e reinicia o serviço se ele terminar. Configurar um novo serviço é fácil: tudo que o supervisor precisa são um diretório com um script chamado run que executa o serviço.

NA PRÁTICA

Então no geral, a pasta onde ficam esses serviços é: /service/

Dentro delas temos as pastas dos serviços como por exemplo: /service/script-time

Se você já tem o daemontools instalado corretamente, crie a pasta acima.

mkdir /service/script-time

Como tinha dito, dentro da pasta do seu serviço, aqui no exemplo chamado script-time, haverá um arquivo chamado run. Crie o mesmo com o conteúdo abaixo:

#!/bin/bash
exec ./rode

Este arquivo quando lido pelo supervisor irá executar a linha exec executando o arquivo rode. Este que está localizando (neste caso) na mesma pasta do serviço, ou seja, o caminho completo seria /service/script-time/rode

Vamos criar agora esse script chamado rode, crie o arquivo e insira o conteudo abaixo nele:

#!/bin/bash
while :
do
   echo "Gerando time: `date`" >> LOG
   sleep 10
done

Basicamente o script irá gerar e alimentar um arquivo chamado LOG com linhas mostrando o time na mesma pasta do serviço, isso a cada 10segundos gerará uma nova linha.

Vamos ajustar as permissões dos arquivos:

chmod 755 /service/script-time/run
chmod 755 /service/script-time/rode

Feito isso, precisando ver se o svscan está rodando, pois se não ele não identificará os serviços em /service para inicializar:

ps aux |grep svscan

Se não retornar nada execute o comando abaixo(caso esteja usando linux com que tenha sh) para iniciar o svscanboot:

sh -cf ‘/command/svscanboot &’

COMANDO SVSTAT

O comando svstat para verificar status. Basta passar o comando seguido da pasta do serviço:

svstat /service/script-time
/service/script-time: up (pid 92) 257 seconds

COMANDO SVC

Comando svc para controlar serviço, opções mais usadas:

  • -u: Se o serviço não estiver em execução, inicie-o. Se o serviço parar, reinicie-o.
  • -d: Envia sinal TERM para parar o serviço, depois que ele parar, não o reinicie.
  • -o: Se o serviço não estiver em execução, inicie-o. Não reinicie se ele parar.
  • -p: Pausa. Envie ao serviço um sinal STOP.
  • -c: continuar. Envie ao serviço um sinal CONT.
  • -t: Encerrar. O serviço será encerrado e logo em seguida iniciado.

Exemplo de uso:

svc -t /service/script-time

FONTES

http://thedjbway.b0llix.net/daemontools/blabbyd.html

https://cr.yp.to/daemontools.html