Num sistema Linux, os serviços (também chamados de daemons) desempenham um papel crítico no tratamento de várias tarefas, como hospedagem web, gerenciamento de banco de dados e redes. No entanto, os serviços às vezes podem falhar ou parar devido a erros, uso elevado de recursos ou falhas inesperadas do sistema.
Para evitar períodos de inatividade e garantir operações suaves, os administradores de sistema podem configurar os serviços para reiniciarem automaticamente sempre que falharem, o que é especialmente útil para servidores web (Apache, Nginx), bancos de dados (MySQL, PostgreSQL) ou outras aplicações críticas que precisam estar disponíveis o tempo todo.
Neste guia, vamos explicar como usar o systemd para configurar um serviço Linux para reiniciar automaticamente se parar.
Por que reiniciar um serviço automaticamente?
Há várias razões pelas quais você pode querer reiniciar automaticamente um serviço no Linux:
- Minimizar o tempo de inatividade: Se um serviço parar inesperadamente, as reinicializações automáticas garantem que os usuários experimentem o mínimo de interrupção.
- Melhorar a confiabilidade: Serviços como servidores web, bancos de dados e processos em segundo plano devem estar sempre em execução.
- Reduzir o trabalho manual: Sem automação, você precisaria verificar os serviços com frequência e reiniciá-los manualmente se falhassem.
- Lidar com falhas inesperadas : Se um serviço falhar devido a bugs de software, limites de recursos ou erros do sistema, o systemd pode reiniciá-lo sem intervenção do administrador.
Agora, vamos passar pelos passos para configurar reinicializações automáticas usando systemd .
Passo 1: Identificar o Serviço que Deseja Reiniciar
Antes de fazer alterações, você precisa saber o nome exato do serviço que deseja configurar, listando todos os serviços em execução .
systemctl list-units --type=service --state=running

Se você já conhece o nome do serviço, pode verificar seu status.
systemctl status apache2

Substitua apache2
pelo nome real do serviço que deseja gerenciar.
Passo 2: Editar a Configuração do Serviço
Systemd permite que você modifique o comportamento do serviço usando arquivos de configuração personalizados. Em vez de modificar as configurações do sistema (que podem ser sobrescritas durante as atualizações), usaremos systemctl edit
para criar um arquivo de substituição.
Execute o seguinte comando:
systemctl edit apache2
Isso abrirá um arquivo em branco no seu editor de texto padrão .
Se o arquivo não estiver vazio, você verá configurações existentes que podem ser modificadas. Caso contrário, você precisará adicionar a configuração de reinicialização necessária.

Passo 3: Adicionar Configuração de Reinicialização do Systemd
No editor, adicione as seguintes linhas.
[Service] Restart=always RestartSec=5s
Explicação dessas configurações:
Restart=always
– Garante que o serviço seja reiniciado sempre que parar, independentemente do motivo.RestartSec=5s
– Indica ao systemd para aguardar 5 segundos antes de reiniciar o serviço, o que pode evitar ciclos rápidos de reinicialização em caso de falhas repetidas.
Depois de adicionar, salve e feche o arquivo.

Após fazer alterações em um serviço systemd, você precisa recarregar o systemd e reiniciar o serviço para garantir que a nova configuração seja aplicada:
sudo systemctl daemon-reload sudo systemctl restart apache2
Para confirmar que o serviço está agora configurado para reiniciar automaticamente, execute:
sudo systemctl show apache2 | grep Restart
Se tudo estiver configurado corretamente, você deverá ver:
Restart=always
Passo 4: Teste a Reinicialização Automática no Linux
Para garantir que a configuração funcione, você pode parar manualmente o serviço e verificar se ele reinicia.
sudo systemctl stop apache2
Aguarde 5 segundos e verifique seu status.
sudo systemctl status apache2
Se o serviço estiver em execução novamente, a reinicialização automática está funcionando!
Opções Adicionais de Reinicialização
Dependendo de suas necessidades, o systemd oferece diferentes políticas de reinicialização:
Restart=always
– O serviço sempre reinicia, mesmo se for parado manualmente.Restart=on-failure
– Reinicia apenas se o serviço encerrar com um erro (mas não se for parado manualmente).Restart=on-abnormal
– Reinicia o serviço se ele falhar devido a um sinal (como uma falha de segmentação).Restart=on-watchdog
– Reinicia o serviço se ele exceder o tempo limite durante a execução.
Você pode substituir Restart=always
por qualquer uma destas opções com base em suas necessidades.
Como verificar logs de serviço em busca de problemas
Se um serviço continuar falhando, é uma boa ideia verificar os logs usando o comando journalctl, que mostrará os logs do serviço dos últimos 10 minutos.
journalctl -u apache2 --since "10 minutes ago"
Para um fluxo de log em tempo real, use:
journalctl -u apache2 -f
Conclusão
Configurar reinicializações automáticas para serviços com falha garante que aplicativos críticos continuem em execução sem intervenção manual. Ao usar as opções de reinício do systemd, você pode minimizar o tempo de inatividade, melhorar a estabilidade do sistema e reduzir a necessidade de solução de problemas manuais.
Source:
https://www.tecmint.com/automatically-restart-service-linux/