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).
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:
Esto debería mostrar si el servicio está en ejecución o detenido. Si está detenido, intente iniciarlo manualmente y vea si funciona:
Esto debería mostrar si el servicio está habilitado o deshabilitado. Si está deshabilitado, intente habilitarlo:
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.
Pruebe el script de inicio manualmente:
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.