A menudo se produce una caída espontánea del servicio. El usuario tiene que ocuparse de su recuperación manual. No hay ningún problema como tal, si ocurre en un ordenador doméstico. Incluso más - es bueno, porque hay una oportunidad real para determinar el estado del servicio, identificar fallos y eliminarlos. Pero la situación es muy diferente cuando se trata de servidores y servicios VPS, que deben trabajar constantemente para proporcionar acceso a un sitio web o aplicación. En este artículo veremos cómo configurar el reinicio automático de los servicios Linux de varias formas: con un script de monitorización ejecutado periódicamente mediante cron y en systemd.
La configuración por defecto es que Systemd no hará nada con el servicio si se bloquea. Pero el usuario siempre puede configurar los ajustes de forma que en caso de caída o parada del servicio, éste se reinicie automáticamente. Para ello se utiliza la directiva Restart, que debe añadirse a la sección Service. Veamos a continuación un ejemplo de configuración del reinicio automático del servicio Apache:
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Aquí RestartSec especifica cuánto tiempo se debe esperar antes de reiniciar el servicio. Cuando haya terminado, guarde los cambios y ejecute el comando daemon-reload para volver a leer la configuración:
$ sudo systemctl daemon-reload
A continuación, para comprobar que todo funciona correctamente, mira el estado del proceso, termina el proceso con una señal kill:
$ sudo systemctl status apache2
$ kill -KILL 32091
Comprueba de nuevo el estado, el proceso debería estar ejecutándose. Para configurar la inicialización para que se ejecute cada vez, utilice una directiva especial Restart: always. Pero debes tener mucho cuidado al usarla, porque no te permitirá terminar el proceso aunque sea necesario. Si el proceso se bloquea constantemente, para que se reinicie, puede añadir un límite al número de reinicios en la sección Servicio:
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Aquí StartLimitBurst
y StartLimitIntervalSec
indican la importancia de reiniciar el servicio cinco veces, y si se bloquea esas cinco veces, dejarlo solo y no tocarlo. La segunda directiva limita los reinicios del servicio a 500 segundos.
Este es probablemente el método más fiable y a prueba de fallos que funciona en todas las versiones de Linux. En Apache es fácil construir un reinicio automático usando un script. Para ello, es necesario introducir el comando:
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Guarda el archivo y asegúrate de hacerlo ejecutable:
chmod ugo+x /usr/local/bin/apache-monitor.sh
No olvides añadir una entrada cron para ejecutar el script periódicamente:
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
Eso es todo. Sí, configurar un reinicio automático del servicio no es tan fácil como puede parecer a primera vista. Pero es una habilidad importante, así que deberías prestarle atención - definitivamente vale la 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: