{"id":1674,"date":"2021-05-18T00:59:23","date_gmt":"2021-05-18T03:59:23","guid":{"rendered":"https:\/\/www.bfnetworks.com.br\/?p=1674"},"modified":"2023-01-15T19:20:32","modified_gmt":"2023-01-15T22:20:32","slug":"utilizando-daemontools-djb-linux","status":"publish","type":"post","link":"https:\/\/bfnetworks.com.br\/utilizando-daemontools-djb-linux\/","title":{"rendered":"UTILIZANDO daemontools djb – linux"},"content":{"rendered":"\n

daemontools<\/em> \u00e9 uma cole\u00e7\u00e3o de ferramentas para gerenciar servi\u00e7os UNIX. <\/p>\n\n\n

Supervisor<\/em> monitora um servi\u00e7o. Ele inicia o servi\u00e7o e reinicia o servi\u00e7o se ele terminar. Configurar um novo servi\u00e7o \u00e9 f\u00e1cil: tudo que o supervisor precisa s\u00e3o um diret\u00f3rio com um script chamado run<\/em> que executa o servi\u00e7o.<\/p>\n\n\n

NA PR\u00c1TICA<\/h3>\n\n\n

Ent\u00e3o no geral, a pasta onde ficam esses servi\u00e7os \u00e9: \/service\/<\/strong><\/p>\n\n\n

Dentro delas temos as pastas dos servi\u00e7os como por exemplo: \/service\/script-time<\/strong><\/p>\n\n\n

Se voc\u00ea j\u00e1 tem o daemontools instalado corretamente, crie a pasta acima.<\/p>\n\n\n

\n
mkdir \/service\/script-time<\/div> <\/div>\n\n\n

Como tinha dito, dentro da pasta do seu servi\u00e7o, aqui no exemplo chamado script-time, haver\u00e1 um arquivo chamado run<\/em><\/strong>. Crie o mesmo com o conte\u00fado abaixo: <\/p>\n\n\n

#!\/bin\/bash\nexec .\/rode<\/code><\/pre>\n\n\n

Este arquivo quando lido pelo supervisor ir\u00e1 executar a linha exec<\/strong> executando o arquivo rode<\/strong>. Este que est\u00e1 localizando (neste caso) na mesma pasta do servi\u00e7o, ou seja, o caminho completo seria \/service\/script-time\/rode<\/strong><\/p>\n\n\n

Vamos criar agora esse script chamado rode, crie o arquivo e insira o conteudo abaixo nele:<\/p>\n\n\n

#!\/bin\/bash<\/code>\nwhile :\ndo\n   echo \"Gerando time: `date`\" >> LOG\n   sleep 10\ndone<\/pre>\n\n\n

Basicamente o script ir\u00e1 gerar e alimentar um arquivo chamado LOG com linhas mostrando o time na mesma pasta do servi\u00e7o, isso a cada 10segundos gerar\u00e1 uma nova linha.<\/p>\n\n\n

Vamos ajustar as permiss\u00f5es dos arquivos:<\/p>\n\n\n

\n
chmod 755 \/service\/script-time\/run<\/div>
chmod 755 \/service\/script-time\/rode<\/div> <\/div>\n\n\n

Feito isso, precisando ver se o svscan<\/strong> est\u00e1 rodando, pois se n\u00e3o ele n\u00e3o identificar\u00e1 os servi\u00e7os em \/service<\/strong> para inicializar:<\/p>\n\n\n

\n
ps aux |grep svscan<\/div> <\/div>\n\n\n

Se n\u00e3o retornar nada execute o comando abaixo(caso esteja usando linux com que tenha sh) para iniciar o svscanboot:<\/p>\n\n\n

\n
sh -cf ‘\/command\/svscanboot &’<\/div> <\/div>\n\n\n

COMANDO SVSTAT<\/h3>\n\n\n

O comando svstat para verificar status. Basta passar o comando seguido da pasta do servi\u00e7o:<\/p>\n\n\n

\n
svstat \/service\/script-time<\/div> <\/div>\n\n\n
\/service\/script-time: up (pid 92) 257 seconds<\/pre>\n\n\n

COMANDO SVC<\/h3>\n\n\n

Comando svc<\/strong> para controlar servi\u00e7o, op\u00e7\u00f5es mais usadas:<\/p>\n\n\n