Software > WeeWX

Ayuda con script para reinicio de Weewx

(1/2) > >>

manolodos:
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

jmviper:
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"


manolodos:
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

jantoni:
Uffffff.......yo ya no me acuerdo, hice eso hace mucho mucho tiempo.....

Pero, veo algo que no me cuadra


--- Código: ---RESTART="/etc/init.d/weewx restart"
--- Fin del código ---

Debería ser


--- Código: ---RESTART="/etc/init.d/weewx restart islantilla"
--- Fin del código ---

o


--- Código: ---RESTART="/etc/init.d/weewx restart inerja"
--- Fin del código ---

o


--- Código: ---RESTART="/etc/init.d/weewx restart baronia"
--- Fin del código ---

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 ]      ????

manolodos:
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  :; )

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa