es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Iniciando un HTTPServer simple como un servicio en Raspian.

¡Permítanme comenzar diciendo que este no es un sistema de producción y no tengo intención de convertirlo en uno!

Tengo dos scripts:

/home/pi/start.sh (propiedad de root):

#!/bin/bash
cd “$(dirname “$0″)”
/usr/bin/python3 poolMonitor.py

y /home/pi/stop.sh (propiedad de root):

#!/bin/bash
sudo killproc -k -n poolMonitor.py

Tengo el archivo /etc/init.d/poolMonitor (propiedad de root):

#!/bin/bash

INFORMACIÓN DE INICIO

Proporciona: Monitor de piscina

Requerido-Comienzo: $all

Requerido-Parada:

Comienzo predeterminado: 5

Parada predeterminada: 6

Inicia el servicio Monitor de piscina

FIN DE INFORMACIÓN DE INICIO

start() {
echo -n “Iniciando: ”
/home/pi/poolMonitor/start.sh
return
}

stop() {
echo -n “Apagando: ”
/home/pi/poolMonitor/stop.sh
return
}

case “$1” in
start)
start
;;
stop)
stop
;;
status)
status poolMonitor
;;
restart)
stop
start
;;
*)
echo “Uso: {start|stop|status|reload|restart[|probe]”
exit 1
;;
esac
exit $?

Instalé el servicio en init.d de la siguiente manera:

sudo update-rc.d poolMonitor defaults

Puedo ejecutar con éxito (inicia y detiene el servidor web y puedo navegar por él):

sudo /home/pi/poolMonitor/start.sh
sudo /home/pi/poolMonitor/stop.sh
sudo service poolMonitor stop
sudo service poolMonitor start

Tenga en cuenta que, debido a la naturaleza de HTTPServer, start.sh nunca regresa. He intentado agregar un ampersand al final de la línea en el archivo start.sh:

/usr/bin/python3 poolMonitor.py &

El problema que tengo es que no se inicia después de un reinicio (ya sea que el ampersand esté presente o no).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Posible solución para el problema:

    Una posible razón por la cual el servicio no se inicia después de un reinicio es que es posible que no esté habilitado para iniciarse en el arranque. Aunque el uso del comando “update-rc.d” debería habilitar el servicio para que se inicie en el arranque, puede haber otros factores en juego. Para solucionar este problema, aquí hay algunos pasos que se deben tomar:

    1. Verifique el estado del servicio después de un reinicio:
      sudo service poolMonitor status
      

      Esto debería mostrar si el servicio está en ejecución o detenido. Si está detenido, intente iniciarlo manualmente y vea si funciona:

      sudo service poolMonitor start
      
    2. Verifique si el servicio está habilitado para iniciar en el arranque:
      sudo systemctl is-enabled poolMonitor.service
      

      Esto debería mostrar si el servicio está habilitado o deshabilitado. Si está deshabilitado, intente habilitarlo:

      sudo systemctl enable poolMonitor.service
      
    3. Verifique los registros en busca de errores o advertencias:
      sudo journalctl -u poolMonitor.service -n 50
      

      Esto debería mostrar las últimas 50 entradas de registro para el servicio. Busque errores o advertencias que puedan indicar por qué el servicio no se está iniciando.

    4. Pruebe el script de inicio manualmente:

      sudo /home/pi/poolMonitor/start.sh
      

      Esto debería iniciar el servidor web y mantenerlo en funcionamiento. Intente acceder a él desde un navegador para ver si funciona.

    Si ninguno de estos pasos funciona, puede haber otros factores en juego, como permisos o dependencias. En cualquier caso, es importante descubrir por qué el servicio no se está iniciando en el arranque, ya que ese es el comportamiento esperado para un servicio.

Comments are closed.