:::: MENU ::::

quarta-feira, 25 de maio de 2016

terça-feira, 24 de maio de 2016

Queridos! A coisa toda é simples. Vou deixar um template aqui pra vocês colocarem seus scripts como serviço e pararem de usar o útil nohup. Outra coisa: Seu script DEVE TER perfil de serviço. Não estou falando de um monte de comandos um embaixo do outro, beleza?
Pra facilitar, vou sublinhar as linhas que vocês devem alterar.


[Unit]
Description=Hubot
Requires=network.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/butis/hubot
User=sobutis
Restart=always
RestartSec=10
EnvironmentFile=/etc/hubot/variaveis.conf
ExecStart=/home/butis/hubot/bin/hubot -a rocketchat

[Install]
WantedBy=multi-user.target


Eu acho que o conteúdo é bastante explicativo, mas, vamos explicar assim mesmo. Nesse exemplo, vamos criar um usuário que executará o hubot.

1. Precisamos criar um usuário pra rodar esse serviço, por questões de segurança.
adduser hubot

Nós não vamos definir o shell dele como /bin/false, porque é um script, ou seja, ele precisa do bash/ksh/sh para executar os comandos.

2. Coloque o script no diretório do usuário criado - isso é meio que lógico né?

3. Crie o arquivo hubot.service dentro de /etc/systemd/system.  Repare: {nome do serviço}.service. Pegou o padrão? Ok!

O Conteúdo é esse daí de cima. Vamos comentar linha a linha pra entendermos.


[Unit]
Description=Hubot 

Descrição do serviço
 

Requires=network.target
Dependências. O seu serviço depende de algum outro?
 

After=network.target
Ordem de execução. O serviço só será iniciado após o outro definido estar rodando.

[Service]
Type=simple
WorkingDirectory=/home/butis/hubot

Diretório de execução do seu serviço.

User=sobutis

Restart=always
RestartSec=10

Caso o serviço não inicie, ele tentará reiniciar de acordo com o estabelecido nas regras de Restart.

EnvironmentFile=/etc/hubot/variaveis.conf

Como meu script possui várias variáveis, eu preferi carregá-las em um arquivo separado. Defina suas variáveis nele.

ExecStart=/home/butis/hubot/bin/hubot -a rocketchat

Comando de execução do script. Coloque o path inteiro.

[Install]
WantedBy=multi-user.target 


Terminado o arquivo, execute um reload nas confs do systemd:
systemctl daemon-reload

E inicie o serviço
systemctl start hubot

Podemos deixar que ele inicie junto com os outros serviços:
systemctl enable hubot


Prontinho. Com esse modelo vocês já podem colocar qualquer script pra rodar como serviço sem dor de cabeça. Como informação adicional, recomendo a leitura de um documento da Red Hat, muito bem explicado por sinal:
 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html

E um guia pra quem ainda tem medo do systemd
E isso aí. Abraços!

Posts populares