Meteoclimatic

Software => WeeWX => Mensaje iniciado por: manolodos en 27 de Noviembre del 2022, 19:36:02 pm

Título: Ayuda con script para reinicio de Weewx
Publicado por: manolodos en 27 de Noviembre del 2022, 19:36:02 pm
Buenas tardes
Tengo una raspberry que maneja tres estaciones remotas con Weewx
Hay 3 instancias de Weewx funcionando, y de vez en cuando alguna se detiene,  normalmente por fallo en la captura de datos.
Buscando en la red, encontré un script, que una vez adaptado a mi situación, reinicia el servicio weewx si detecta que está parado
Me funcionaba bien con una sola instancia de weewx, pero no funciona con más de una, ya que se basa en que exista o no exista un proceso de nombre weewx, y con 3 instancias, pues aunque haya una parada siguen existiendo 2 procesos mas con nombre weewx

Aquí el script:

#!/bin/bash
RESTART="/etc/init.d/weewx restart"
PGREP="/usr/bin/pgrep"
MEMCACHED="weewx"
# buscamos que exista el proceso
$PGREP ${MEMCACHED}
# sino existe id de proceso y el comando anterior devuelve 0
if [ $? -eq 1 ]
then
$RESTART
fi

Alguien me puede ayudar, por favor ?
Gracias
Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: jmviper en 28 de Noviembre del 2022, 15:32:59 pm
Hola manolodos

Tendrá diferente nombre cada instancia en /etc/init.d no ??

Sería cuestión de que chequeara cada instancia.

Ponle el argumento -f a pgrep para que lea toda la línea del proceso (por defecto solo lee los 15 primeros caracteres).

PGREP="/usr/bin/pgrep -f"


Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: manolodos en 28 de Noviembre del 2022, 16:57:06 pm
Hola jmviper
Gracias por tu respuesta
Sí, cada instancia tiene nombre diferente
Añadiendo -f no hace nada distinto
La salida de ps -axjf es
1 11871 11870 11870 ?           -1 Sl       0 165:31 /usr/bin/python3 /home/weewx/bin/weewxd --daemon --log-label weewx-islantilla --pidfile=/var/run/weewx-islantilla.pid /etc/weeewx/islantilla 

1 23590 23589 23589 ?           -1 Sl       0  84:50 /usr/bin/python3 /home/weewx/bin/weewxd --daemon --log-label weewx-nerja --pidfile=/var/run/weewx-nerja.pid /etc/weewx/nerja

1 27691 27690 27690 ?           -1 Sl       0  24:57 /usr/bin/python3 /home/weewx/bin/weewxd --daemon --log-label weewx-baronia --pidfile=/var/run/weewx-baronia.pid /etc/weewx/baronia
La segunda columna es el PID
La salida del script es simplemente los 3 PID de los 3 procesos weewx
Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: jantoni en 28 de Noviembre del 2022, 20:10:07 pm
Uffffff.......yo ya no me acuerdo, hice eso hace mucho mucho tiempo.....

Pero, veo algo que no me cuadra

Código: [Seleccionar]
RESTART="/etc/init.d/weewx restart"
Debería ser

Código: [Seleccionar]
RESTART="/etc/init.d/weewx restart islantilla"
o

Código: [Seleccionar]
RESTART="/etc/init.d/weewx restart inerja"
o

Código: [Seleccionar]
RESTART="/etc/init.d/weewx restart baronia"
Por otro lado no acabo de entender el script....lo cual no es extraño, ja ja ja.

¿Me podéis traducir lo que significa

if [ $? -eq 1 ]      ????
Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: manolodos en 28 de Noviembre del 2022, 20:49:02 pm
Hola jantoni

RESTART="/etc/init.d/weewx restart islantilla"

Claro, es lo que debería ser, si el script distinguiera que es esa instancia la que está detenida
Este script sólo determina si hay algún proceso con nombre weewx corriendo, y con 3 instancias, aunque haya una detenida, no lo reinicia

Supongo que habría que modificar el script para que pregunte por cada uno de los 3 procesos, y según cual esté parado, proceder a reniciarlo
O escribir uno completamente nuevo.....( yo también hace mucho tiempo, y estoy muy muy desentrenado  :; )
Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: jantoni en 28 de Noviembre del 2022, 21:13:10 pm
Yo miraría el procedimiento de watchdog que hay para weewx y que ya se comentó por aquí por un usuario

https://forum.meteoclimatic.net/index.php?topic=2509.0

Evidentemente habrá que adaptarlo a multi instancia
Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: manolodos en 28 de Noviembre del 2022, 22:26:31 pm
Ya lo tengo, pero son 3 scripts, 1 para cada instancia
Como me dijo jmviper, con pgrep -f
Me queda programarlo en crontab

comprobarislantilla.sh

#!/bin/bash
RESTART="sudo /etc/init.d/weewx restart islantilla"
PGREP="/usr/bin/pgrep -f"
MEMCACHED="weewx-islantilla"
# buscamos que exista el proceso
$PGREP ${MEMCACHED}
# sino existe id de proceso y el comando anterior devuelve 0
if [ $? -eq 1 ]
then
$RESTART
fi

Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: jmviper en 28 de Noviembre del 2022, 22:36:38 pm

Supongo que habría que modificar el script para que pregunte por cada uno de los 3 procesos, y según cual esté parado, proceder a reniciarlo


Por ahí irían los tiros. Un bloque de esos para cada estación.

Con pgrep tendrías que ver que estuviese ese nombre diferente para cada una y que lo reiniciase.


¿Me podéis traducir lo que significa

if [ $? -eq 1 ]      ????


La salida de la ejecución del último comando. En este caso si pgrep devuelve 1 (falso) reinicia weewx. Curioso... casi todos los lenguajes de programación tratan el 1 como true y el 0 como false... menos bash…

P.D. bueno viendo esto último por la web resulta que 0 lo devuelve para una salida normal sin errores y si no, devuelve otro número como código de error siendo el 1 un error general.
Título: Re:Ayuda con script para reinicio de Weewx
Publicado por: manolodos en 28 de Noviembre del 2022, 23:18:21 pm

Supongo que habría que modificar el script para que pregunte por cada uno de los 3 procesos, y según cual esté parado, proceder a reniciarlo


Por ahí irían los tiros. Un bloque de esos para cada estación.

Con pgrep tendrías que ver que estuviese ese nombre diferente para cada una y que lo reiniciase.

Sí, con pgrep - f salen los 3 procesos con diferentes nombres, weewx-nerja,  etc

Probado y funcionando con 3 scripts, 1 por estación
En crontab lo he programado cada 15 minutos y con un intervalo de 1 minuto entre cada uno de los 3 scripts

Gracias de nuevo