En un sistema Linux, los servicios (también llamados demonios) desempeñan un papel crítico en la gestión de diversas tareas como alojamiento web, gestión de bases de datos y redes. Sin embargo, los servicios pueden a veces fallar o detenerse debido a errores, alto uso de recursos o fallos inesperados del sistema.
Para prevenir el tiempo de inactividad y asegurar operaciones fluidas, los administradores del sistema pueden configurar los servicios para que se reinicien automáticamente cada vez que fallen, lo cual es especialmente útil para servidores web (Apache, Nginx), bases de datos (MySQL, PostgreSQL) u otras aplicaciones críticas que deben estar disponibles en todo momento.
En esta guía, explicaremos cómo usar systemd para configurar un servicio de Linux para que se reinicie automáticamente si se detiene.
¿Por qué reiniciar un servicio automáticamente?
Hay varias razones por las cuales podrías querer reiniciar automáticamente un servicio en Linux:
- Minimizar el tiempo de inactividad: Si un servicio se detiene inesperadamente, los reinicios automáticos aseguran que los usuarios experimenten una mínima interrupción.
- Mejorar la fiabilidad: Servicios como servidores web, bases de datos y procesos en segundo plano deben estar siempre en funcionamiento.
- Reducir el trabajo manual: Sin automatización, tendrías que verificar los servicios con frecuencia y reiniciarlos manualmente si fallan.
- Manejar fallos inesperados: Si un servicio se bloquea debido a errores de software, límites de recursos o errores del sistema, systemd puede reiniciarlo sin intervención del administrador.
Ahora, revisemos los pasos para configurar reinicios automáticos usando systemd.
Paso 1: Identificar el servicio que deseas reiniciar
Antes de hacer cambios, necesitas conocer el nombre exacto del servicio que deseas configurar mediante listando todos los servicios en ejecución.
systemctl list-units --type=service --state=running

Si ya conoces el nombre del servicio, puedes verificar su estado.
systemctl status apache2

Reemplaza apache2
con el nombre real del servicio que deseas gestionar.
Paso 2: Editar la configuración del servicio
Systemd te permite modificar el comportamiento del servicio usando archivos de configuración personalizados. En lugar de modificar la configuración a nivel del sistema (que puede ser sobrescrita durante las actualizaciones), usaremos systemctl edit
para crear un archivo de sobreescritura.
Ejecuta el siguiente comando:
systemctl edit apache2
Esto abrirá un archivo en blanco en tu editor de texto predeterminado.
Si el archivo no está vacío, verás configuraciones existentes que puedes modificar. De lo contrario, necesitarás agregar la configuración de reinicio necesaria.

Paso 3: Agregar configuración de reinicio de Systemd
En el editor, agrega las siguientes líneas.
[Service] Restart=always RestartSec=5s
Explicación de estas configuraciones:
Restart=always
– Asegura que el servicio se reinicie cada vez que se detiene, sin importar la razón.RestartSec=5s
– Indica a systemd que espere 5 segundos antes de reiniciar el servicio, lo que puede prevenir bucles de reinicio rápidos en caso de fallos repetidos.
Una vez añadido, guarda y cierra el archivo.

Después de realizar cambios en un servicio de systemd, necesitas recargar systemd y reiniciar el servicio para asegurarte de que la nueva configuración se aplique:
sudo systemctl daemon-reload sudo systemctl restart apache2
Para confirmar que el servicio ahora está configurado para reiniciarse automáticamente, ejecuta:
sudo systemctl show apache2 | grep Restart
Si todo está configurado correctamente, deberías ver:
Restart=always
Paso 4: Prueba el Reinicio Automático en Linux
Para asegurarte de que la configuración funciona, puedes detener manualmente el servicio y verificar si se reinicia.
sudo systemctl stop apache2
Espera 5 segundos y luego verifica su estado.
sudo systemctl status apache2
¡Si el servicio está funcionando de nuevo, el reinicio automático está funcionando!
Opciones Adicionales de Reinicio
Dependiendo de tus necesidades, systemd proporciona diferentes políticas de reinicio:
Restart=always
– El servicio siempre se reinicia, incluso si se detuvo manualmente.Restart=on-failure
– Se reinicia solo si el servicio sale con un error (pero no si se detiene manualmente).Restart=on-abnormal
– Reinicia el servicio si se bloquea debido a una señal (como un fallo de segmentación).Restart=on-watchdog
– Reinicia el servicio si se agota el tiempo de espera mientras se está ejecutando.
Puedes reemplazar Restart=always
con cualquiera de estas opciones según tus necesidades.
Cómo verificar registros de servicios en busca de problemas
Si un servicio sigue fallando, es una buena idea verificar los registros utilizando el comando journalctl, que mostrará los registros del servicio de los últimos 10 minutos.
journalctl -u apache2 --since "10 minutes ago"
Para ver un flujo de registro en tiempo real, usa:
journalctl -u apache2 -f
Conclusión
Configurar reinicios automáticos para servicios que fallan asegura que las aplicaciones críticas sigan funcionando sin intervención manual. Al utilizar las opciones de reinicio de systemd, puedes minimizar el tiempo de inactividad, mejorar la estabilidad del sistema y reducir la necesidad de solución de problemas manuales.
Source:
https://www.tecmint.com/automatically-restart-service-linux/