Muitas vezes, há uma queda espontânea do serviço. O utilizador tem de tratar da sua recuperação manual. Se isso acontecer num computador doméstico, não há qualquer problema. Mais ainda - é bom, porque existe uma oportunidade real para determinar o estado do serviço, identificar falhas e eliminá-las. Mas a situação é bastante diferente quando se trata de servidores e serviços VPS, que têm de trabalhar constantemente para fornecer acesso a um sítio Web ou aplicação. Neste artigo, veremos como configurar o reinício automático dos serviços Linux de várias formas: com um script de monitorização executado periodicamente via cron e no systemd.
A configuração padrão é que o Systemd não fará nada com o serviço se ele falhar. Mas o utilizador pode sempre configurar as definições de modo a que, em caso de falha ou paragem do serviço, este seja reiniciado automaticamente. Para este efeito, é utilizada a diretiva Restart, que deve ser adicionada à secção Service. De seguida, vamos ver um exemplo de configuração do reinício automático do serviço Apache:
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Aqui RestartSec especifica o tempo de espera antes de reiniciar o serviço. Quando tiver terminado, guarde as alterações e execute o comando daemon-reload para reler a configuração:
$ sudo systemctl daemon-reload
Em seguida, para verificar se tudo está a funcionar corretamente, veja o estado do processo, termine o processo com um sinal kill:
$ sudo systemctl status apache2
$ kill -KILL 32091
Verifique o estado novamente, o processo deve estar em execução. Para definir a inicialização para ser executada sempre, utilize uma diretiva especial Restart: always. Mas deve ter muito cuidado ao utilizá-la, porque não lhe permitirá terminar o processo mesmo que seja necessário. Se o processo estiver constantemente a falhar, para que seja reiniciado, pode adicionar um limite ao número de reinícios na secção Serviço:
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Aqui, StartLimitBurst
e StartLimitIntervalSec
indicam a importância de reiniciar o serviço cinco vezes e, se ele falhar todas essas cinco vezes, deixá-lo em paz e não tocar nele. A segunda diretiva limita os reinícios do serviço a 500 segundos.
Este é provavelmente o método mais fiável e à prova de falhas que funciona em todas as versões do Linux. No Apache é fácil construir um reinício automático usando um script. Para o fazer, é necessário introduzir o comando:
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Guarde o ficheiro e certifique-se de que o torna executável:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Não se esqueça de adicionar uma entrada cron para executar o script periodicamente:
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
E pronto. Sim, configurar um reinício automático do serviço não é tão fácil como pode parecer à primeira vista. Mas é uma capacidade importante, pelo que deve prestar atenção a ela - vale mesmo a pena.
Apply the discount by inserting the promo code in the special field at checkout:
Apply the discount by inserting the promo code in the special field at checkout: