Tutoriais

Gerenciando serviços com systemd: guia prático

Gerenciando serviços com systemd: guia prático

O systemd é o gerenciador de serviços da maioria das distribuições Linux modernas. Com ele, você controla servidores web, bancos de dados e também suas próprias aplicações, garantindo que reiniciem em caso de falha e subam junto com o sistema.

Comandos básicos

sudo systemctl status nginx      # estado do serviço
sudo systemctl start nginx       # inicia
sudo systemctl stop nginx        # para
sudo systemctl restart nginx     # reinicia
sudo systemctl reload nginx      # recarrega a configuração sem derrubar conexões
sudo systemctl enable nginx      # inicia automaticamente no boot
sudo systemctl disable nginx     # não inicia no boot
sudo systemctl enable --now nginx  # habilita e inicia de uma vez

Listar serviços:

systemctl list-units --type=service --state=running
systemctl --failed

Criando um serviço para sua aplicação

Suponha uma aplicação Node.js em /home/app/api, que roda com node server.js.

Crie o arquivo /etc/systemd/system/api.service:

[Unit]
Description=Minha API Node.js
After=network.target

[Service]
Type=simple
User=app
WorkingDirectory=/home/app/api
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=5
Environment=NODE_ENV=production
Environment=PORT=3000

[Install]
WantedBy=multi-user.target

Ative:

sudo systemctl daemon-reload
sudo systemctl enable --now api
sudo systemctl status api

O que cada opção faz

  • After=network.target — inicia depois da rede;
  • User=app — roda com um usuário sem privilégios;
  • Restart=always — reinicia automaticamente se o processo cair;
  • Environment= — define variáveis de ambiente (para muitas variáveis, use EnvironmentFile=/caminho/.env).

Vendo os logs do serviço

journalctl -u api -f                  # acompanha em tempo real
journalctl -u api --since "today"     # logs de hoje
journalctl -u api -n 100 --no-pager   # últimas 100 linhas

Timers: uma alternativa ao cron

O systemd também agenda tarefas. Exemplo de backup diário:

/etc/systemd/system/backup.service:

[Unit]
Description=Backup diário

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

/etc/systemd/system/backup.timer:

[Unit]
Description=Executa o backup todo dia às 3h

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
systemctl list-timers

Limitando recursos

Evite que uma aplicação consuma o servidor inteiro:

[Service]
MemoryMax=1G
CPUQuota=150%

Conclusão

Com systemd, suas aplicações ficam robustas, reiniciam sozinhas e têm logs centralizados. Coloque isso em prática em um VPS-NVME-BR da VittHost, com servidores no Brasil e NVMe.Use o cupom SP-VITT20 e ganhe 20% de desconto na primeira fatura enquanto a promoção estiver ativa.

Compartilhar:

Pronto para hospedar seu próximo projeto?

VPS com painel pré-instalado em 1 clique. Ativação imediata.

Ver planos VPS