Raspberry Pi ZeroW se inicia automáticamente

>> [Contenido] Recolección remota de datos paso a paso


Modelo Raspberry Pi: Zero W

Sistema Raspberry Pi: Raspbian, 2018-11-13-raspbian-stretch-lite.img

Python 2.7.3



Todos los programas previamente depurados se ejecutan manualmente. Ahora deje que comience automáticamente.

Se han encontrado tres métodos en línea:

Agregar código de inicio en rc.local Intenté varias veces según N versiones del artículo sin éxito
Comience como un servicio Prueba OK
Iniciar desde el escritorio sistema raspbian-stretch-lite sin escritorio


Como inicio de servicio, significa que se inicia un servicio al inicio. En este programa de servicio, se llama a python para ejecutar el archivo de programa, de modo que el archivo de programa pueda ejecutarse automáticamente al inicio.

Primero mire algunos de los servicios existentes en el sistema, ingrese el directorio /etc/init.d y enumere todos los contenidos:

pi @ raspberrypi: ~ $ cd /etc/init.d

pi @ raspberrypi: /etc/init.d $ ls

imagen

Puede abrir algunos para ver qué hay dentro:

pi @ raspberrypi: /etc/init.d $ sudo nano ssh

pi @ raspberrypi: /etc/init.d $ sudo nano ntp


Prepare el programa test_serial.py que debe iniciarse y el archivo se guardará en /home/pi/test_serial.py

El script serial de prueba del servicio recién creado en el directorio /etc/init.d debe tener un nombre especial para evitar conflictos con el sistema.

pi @ raspberrypi: ~ $ sudo nano /etc/init.d/test-serial

En el editor nano que aparece, copie el siguiente párrafo, guárdelo y salga:

  1 #! / Bin / bash
   2 # /etc/init.d/test-serial
   3  
  4 ### BEGIN INIT INFO
   5 # Proporciona: xxxx_test_serial
   6 # Required-Start: $ remote_fs
   7 # Required-Stop: $ remote_fs
   8 # Inicio predeterminado: 2 3 4 5
   9 # Parada predeterminada: 0 1 6
 10 # Descripción breve: funciones serie de prueba
 11 # Descripción: Este servicio se utiliza para iniciar el servicio serie de prueba
 12 ### END INIT INFO
 13  
14 case " $ 1 " en
 15      inicio )
 16         echo " Inicio "
 17          python /home/pi/test_serial.py &
 18          ;;
19      stop)
 20          echo " Stop "
 21          killall test_serial.py
 22          salida 1
 23          ;;
24      *)
 25          echo " Uso: prueba de servicio-inicio en serie | parada "
 26          salida 1
 27          ;;
28 esac
 29  salida 0

imagen

Las primeras líneas de comentarios también son útiles: al escribir un nuevo servicio, complete el nombre y la función reales.

inicio) El siguiente python /home/pi/test_serial.py y significa ejecutar el archivo /home/pi/test_serial.py con python, y el siguiente y significa que el programa se puede ejecutar en segundo plano, lo que no afectará la operación de otros servicios .


Cambie al directorio /etc/init.d y enumere todos los archivos en este directorio

pi @ raspberrypi: ~ $ cd /etc/init.d

pi @ raspberrypi: /etc/init.d $ ls

Puede ver que otros archivos de servicio son verdes y test-serial es gris

imagen

En el sistema Linux, diferentes colores representan diferentes tipos de archivos:

Azul Directorio
Verde Archivo ejecutable
Rojo Archivo comprimido
Azul claro Archivo de enlace
Rojo intermitente El archivo de enlace es anormal
Amarillo Archivo de dispositivo
Gris Otros documentos


Agregue permiso de ejecución al archivo de serie de prueba para que pueda ejecutarse y llamarse:
pi @ raspberrypi: ~ $ sudo chmod + x /etc/init.d/test-serial

imagen

Luego agregue test-serial al elemento de inicio del sistema:
pi @ raspberrypi: ~ $ sudo update-rc.d test-serial por defecto

启动 test-serial
pi @ raspberrypi: ~ $ sudo service test-serial start

Ver el estado de ejecución
pi @ raspberrypi: ~ $ service test-serial status

imagen


Reinicie Raspberry Pi para ver si el servicio se inicia automáticamente

pi @ raspberrypi: ~ $ sudo shutdown -h ahora

pi @ raspberrypi: ~ $ estado de serie de prueba de servicio

imagen


Conéctese al asistente del puerto serie, la velocidad en baudios es de 19200, el asistente del puerto serie envía la prueba, la pantalla es normal, lo que indica que test_serial.py se configura automáticamente después del arranque.

imagen


En el proyecto de recopilación remota de datos, se utilizan los siguientes dos programas, y los métodos anteriores se utilizan para iniciar y ejecutar los dos servicios por separado:

xx_monitor.py Comunicación, almacenamiento
xx_upload.py Subir archivos de datos


Contenido extendido

Eliminar permisos de ejecución de archivos

pi @ raspberrypi: ~ $ sudo chmod -x /etc/init.d/test-serial

Eliminar elementos de inicio del sistema

pi @ raspberrypi: ~ $ sudo update-rc.d -f test-serial remove


Si modifica la secuencia de comandos del servicio, cuando vuelva a usar las instrucciones en el servicio, se le pedirá que vuelva a cargar. Siga las instrucciones para ingresar:
pi @ raspberrypi: ~ $ systemctl daemon-reload

En este momento, indica que se requiere permiso de root, pero las cosas relacionadas con la raíz no se han configurado antes.

imagen

Establezca la contraseña de la cuenta raíz:

pi @ raspberrypi: ~ $ sudo passwd root

Abrir cuenta de root:

pi @ raspberrypi: ~ $ sudo passwd - desbloquear raíz

Luego ejecute systemctl daemon-reload, lo que provocará el éxito

pi @ raspberrypi: ~ $ systemctl-daemon-reload

imagen


Supongo que te gusta

Origin www.cnblogs.com/hotwater99/p/12749966.html
Recomendado
Clasificación