He construido una red de sensores inalámbricos que consta de dos Raspberry Pi (Runnnig Raspbian) con sensores y una estación base Raspberry Pi que recopila los datos.
Cada vez que quiero ejecutar el sistema, tengo que iniciar sesión en cada unidad de sensor y ejecutar dos programas Python en bucle, uno para recopilar datos del sensor y otro para transmitir a la estación base.
Estas unidades se dirigen a ubicaciones incómodas sin acceso a Internet, por lo que llevar un monitor, un teclado y un mouse conmigo para que funcionen no es exactamente fácil. ¿Hay alguna forma de configurarlos para iniciar sesión automáticamente, ejecutar el programa 1 y luego ejecutar el programa 2 automáticamente al inicio?
sudo
enrc.local
sí mismo. Se ejecuta con privilegios de root en el arranque. Asegúrese de prestar atención a la parte sobre el uso a&
menos que su programa simplemente haga algo rápidamente y luego se cierre./path/to/somescript.sh &
querc.local
, como en el complemento de la escriturawhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;
antes de iniciar sus programas.rc.local
sin ejecutar sudo de antemano. ¿Que sugieres?La respuesta de Xer0FyT es probablemente la forma más sencilla de iniciar automáticamente un programa en el PI. Pero los problemas ocurren una vez que el programa iniciado falla por cualquier motivo porque no se reiniciará, ya que no hay monitoreo del proceso. Yo personalmente recomendaría usar daemontools en su lugar. Es bastante simple de configurar (y está incluido en Raspbian). Básicamente, crea un directorio de servicios que contiene un
run
script de shell que inicia su programa. Daemontools se asegurará de que su programa se inicie y reinicie en caso de que falle por algún motivo.Configurar daemontools es bastante simple. Sólo
Luego cree su directorio de servicio que contenga un script ejecutable ejecutable:
Eche un vistazo
/service/my-service/run
y edítelo para que inicie su propio programa en lugar de ejecutarseecho
. Una vez hecho esto, enlace simbólicamente ese directorio/etc/service
para que daemontools lo (re) inicie automáticamente:Después de unos 5 segundos, su programa debería ejecutarse. Puede iniciarlo / detenerlo usando
También es posible iniciar sesión en (por ejemplo) syslog. Para que la salida de su programa no se pierda. Escribí una publicación de blog más completa sobre esto aquí: https://info-beamer.com/blog/running-info-beamer-in-production
fuente
cierre la aplicación de configuración LXSession y reinicie su pi
su aplicación java debería ejecutarse después de reiniciar
fuente
Probablemente ya haya
cron
instalado algunas de las tareas de limpieza de PI.Buscar
man 5 crontab
para@reboot
.fuente
Es posible que desee investigar
service
. Puede crear un script de inicio que sea parte del inicio del sistema y ponerlo en un nivel de ejecución apropiado.Ejecutar
man service
.Aquí hay una guía para crear scripts de inicio: http://www.novell.com/coolsolutions/feature/15380.html
fuente
systemd
mayoría de las distribuciones de Linux, incluida Raspbian, esta respuesta deberá actualizarse si el OP actualiza su sistema para que se haga cargo de sysVinit
... 8- (Solo sigue este enlace .
Suponiendo que tiene test.txt en el escritorio, un ejemplo podría ser:
¡y funciona!
fuente