El watchdog timer es un temporizador electrónico que se usa para detectar algún mal funcionamiento o cuelgue del sistema en el que está instalado y reiniciarlo para volver al funcionamiento normal.
Afortunadamente el chip de nuestra Raspberry Pi lleva implementado ese temporizador, vamos a usarlo para reiniciarla en caso de que algo vaya mal.
Lo primero es cargar el módulo del kernel con este comando:
sudo modprobe bcm2708_wdogA continuación, para que ese módulo se cargue al arranque del sistema, tecleamos:
echo "bcm2708_wdog" | sudo tee -a /etc/modulesSi os sale el siguiente error al ejecutar el primer comando:
modprobe: FATAL: Module bcm2708_wdog not found.Los dos comandos a ejecutar son los siguientes:
sudo modprobe bcm2835_wdtInstalamos watchdog daemon:
echo "bcm2835_wdt " | sudo tee -a /etc/modules
sudo apt-get install watchdog chkconfig
sudo chkconfig watchdog onAhora toca configurar el servicio watchdog para los escenarios en los que queremos que reinicie la Raspberry Pi, para ello editamos el archivo watchdog.conf:
sudo nano /etc/watchdog.confEl archivo se entiende fácilmente y vamos a configurar que nuestra Raspberry Pi se reinicie si la carga de la CPU en un minuto es superior al 24%, para ello le quitamos el # a estas dos lineas que nos deben quedar así y añadimos watchdog-timeout = 10:
max-load-1 = 24Iniciamos el servicio watchdog:
watchdog-device = /dev/watchdog
watchdog-timeout = 10
sudo systemctl start watchdogAhora vamos a probar que todo funciona correctamente, para ello lo primero es asegurarse de que no hay ningún proceso importante corriendo en la Raspberry Pi y vamos a desactivar la partición swap, tecleamos:
sudo swapoff -aY a continuación vamos a probar el funcionamiento del watchdog con una "forkbomb", para ello ejecutamos:
: (){ :|:& };:Y si todo ha ido bien nuestra Raspberri Pi se habrá reiniciado al cabo de unos segundos.
Si comprobamos el estado del servicio después del reinicio:
sudo systemctl -l status watchdogNos encontramos con ésto:
● watchdog.service - watchdog daemonEl sistema no ha cargado el servicio y no lo ha iniciado después del reinicio. Para activarlo y que se inicie después de cada reinicio, seguimos los siguientes pasos:
Loaded: loaded (/lib/systemd/system/watchdog.service; static)
Active: inactive (dead)
Copiamos el archivo watchdog.service a la carpeta /etc/systemd/system/:
sudo cp /lib/systemd/system/watchdog.service /etc/systemd/system/Lo abrimos:
sudo nano /etc/systemd/system/watchdog.serviceA la linea que empieza por ExecStartPre=... le añadimos al final ' y nos debe quedar así:
ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/modprobe $watchdog_module'Y después de la sección [Install] añadimos esta linea:
WantedBy=multi-user.targetSincronizamos el demonio:
sudo systemctl daemon-reloadActivamos el servicio:
sudo systemctl enable watchdogY lo iniciamos:
sudo systemctl start watchdogReiniciamos el sistema o ejecutamos la "forkbomb" y cuando se haya reiniciado comprobamos que sigue activo y funcionando:
sudo systemctl -l status watchdogSi nos sale esto es que está todo correcto y el servicio watchdog funcionará después de cada reinicio:
● watchdog.service - watchdog daemonPues ya podemos despreocuparnos de si nuestra Raspberry Pi se queda colgada y no podemos reiniciarla a mano, lo siguiente será conseguir que nos avise, enviándonos un mail por ejemplo, cuando esto suceda.
Loaded: loaded (/etc/systemd/system/watchdog.service; enabled)
Active: active (running)
Documentación consultada para esta entrada en los foros de Raspberry.
Comparte este post con tus amigos!
0 comentarios:
Comparte tu opinión con los demás, deja un comentario. ↓
Los comentarios no son moderados, sin embargo si contienen insultos o son ofensivos, pueden ser borrados.