Em um sistema Linux, os serviços (também chamados de daemons) desempenham um papel crítico no gerenciamento 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, explicaremos 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 interrupções mínimas.
- 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, seria necessário verificar os serviços com frequência e reiniciá-los manualmente em caso de falha.
- 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 pelas etapas para configurar reinicializações automáticas usando systemd.
Etapa 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.
Etapa 2: Editar a Configuração do Serviço
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, será necessário adicionar a configuração de reinicialização necessária.

Etapa 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 reinicie sempre que parar, independentemente do motivo.RestartSec=5s
– Informa ao systemd para esperar 5 segundos antes de reiniciar o serviço, o que pode prevenir loops de reinício rápido em caso de falhas repetidas.
Uma vez adicionado, 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 agora está configurado para reiniciar automaticamente, execute:
sudo systemctl show apache2 | grep Restart
Se tudo estiver configurado corretamente, você deverá ver:
Restart=always
Passo 4: Teste o Reinício Automático no Linux
Para garantir que a configuração funcione, você pode parar o serviço manualmente e verificar se ele reinicia.
sudo systemctl stop apache2
Espere 5 segundos e, em seguida, verifique seu status.
sudo systemctl status apache2
Se o serviço estiver em execução novamente, o reinício automático está funcionando!
Opções Adicionais de Reinício
Dependendo de suas necessidades, o systemd fornece diferentes políticas de reinício:
Restart=always
– O serviço sempre reinicia, mesmo que tenha sido parado manualmente.Restart=on-failure
– Reinicia apenas se o serviço sair com um erro (mas não se for parado manualmente).Restart=on-abnormal
– Reinicia o serviço se ele travar devido a um sinal (como uma falha de segmentação).Restart=on-watchdog
– Reinicia o serviço se ele expirar enquanto estiver em execução.
Você pode substituir Restart=always
por qualquer uma dessas opções com base em suas necessidades.
Como Verificar os Logs de Serviços para 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
A configuração de reinícios automáticos para serviços que falham garante que aplicativos críticos continuem funcionando 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 manual.
Source:
https://www.tecmint.com/automatically-restart-service-linux/