DEV Community

Henrique Marques Fernandes
Henrique Marques Fernandes

Posted on • Originally published at marquesfernandes.com on

Criando um Serviço Linux com systemd

Frequentemente vejo a necessidade de criar algum programa ou script que precisa estar sempre rodando na máquina, e também quando o computador é reiniciado.

Existem algumas ferramentas para resolver esse trabalho, mas sempre considere usar soluções embutidas em seu sistema operacional primeiro.

É muito fácil criar um serviço Linux, você pode criar um serviço que rode qualquer script ou programa em qualquer linguagem de programação, e tornar esse sistema persistente e resiliente como um serviço em sua máquina.

Nesse artigo vamos usar o systemd para gerenciar nosso serviço, ele está presente na maioria das distribuições linux como Ubuntu, Debian, OpenSuse…

Criando o Programa

Vamos criar uma aplicação web simples em NodeJs de exemplo. Ele vai escutar na porta 9999 e retornar a data atual.

const http = require('http');http.createServer(function (req, res) { res.write(new Date().toString()); res.end();}).listen(9999);

Vamos testar, no navegador entre em http://localhost:9999.

Agora que validamos que nosso programa funciona, vamos fazer com que ele rode sempre, se por algum motivo ele parar de funcionar deve ser restartado e caso a máquina seja reiniciada o serviço precisa iniciar também.

Criando o Serviço

Chamerei nosso serviço de webdate, com o seu editor de terminal preferido cria um arquivo no caminho /etc/systemd/system/webdate.service.

[Unit]Description=WebDate - Serviço Web de DataAfter=network.targetStartLimitIntervalSec=0[Service]Type=simpleRestart=alwaysRestartSec=1User=centosExecStart=/usr/bin/node /caminho/arquivo.js[Install]WantedBy=multi-user.target

Você precisará alterar as seguintes variáveis:

  • User= : Coloquei o seu usuário atual, ele será o usuário que executará o serviço
  • ExecStart= : Esse é o caminho para o script que será executado, você precisa fornecer primeiro o caminho completo para a linha de comando no, normalmente, /usr/bin/node e em seguida o caminho completo para o seu arquivo.

Agora para iniciar o nosso serviço basta executar o seguinte comando:

systemctl start webdate

Para habilitar a inicialização automática quando o sistema é ligado:

systemctl enable webdate

Pronto, agora seu serviço já está executando e configurado para reiniciar em caso de falha e iniciar automaticamente junto com o sistema. Para parar o serviço basta executar o seguinte comando:

systemctl stop webdate

O post Criando um Serviço Linux com systemd apareceu primeiro em Henrique Marques Fernandes.

Latest comments (0)