Como ejecutar un script Python al arrancar tu Raspberry Pi

Publicado por Loli Diéguez en

Cuando usas la Raspberry Pi, muchas veces necesitas que un programa o script se ejecute al iniciarse la placa en el momento del arranque, para realizar alguna tarea de tu proyecto con Pi sin necesidad de iniciar sesión a través de SSH o VNC. A diferencia del Arduino, la Pi hay que configurarla para ejecutar un programa automáticamente.

En este articulo te muestro cómo ejecutar automáticamente un script Python en la Raspberry Pi durante el inicio.

La ejecución de un script durante el arranque de la placa te puede ayudar en cualquiera de tus proyectos en los que necesitas hacer algo de forma automática cuando la placa se reinicia o responder a comandos tan pronto como se encienda la Raspberry Pi.

Una de las maneras más fáciles de hacer esto es usar cron.

Cron es una herramienta para ejecutar tareas programadas, no solo en el momento de arranque de la placa sino que también lo puedes usar para programar que un script se ejecute en un momento determinado

Cron hace uso de crontab para saber cuales son las tareas que tiene que ejecutar, crontab no es mas que una tabla con el listado de tareas que se tienen que ejecutar en un momento determinado.

Para programar la ejecución de los script hay que editar crontab, para ello, ejecuta esto en el terminal de comandos:

crontab -e

Tras la ejecución verás una interfaz como esta:

cron tab gui

 

Seguramente habrás tenido que elegir cual es el editor con el que lo quieres abrir, en mi caso selecciono nano porque es el que mas conozco.

Ahora toca añadir las tareas que queremos programar, para ello hay que seguir una nomenclatura por la cual especificamos cuando queremos que las tareas se ejecuten. Existen también algunas expresiones especiales para indicar que una tarea se ejecute al arrancar la placa y otros para introducir comentarios (#), es muy importante que comentes bien las lineas que añadas en crontab, de lo contrario, si en el futuro vuelves a editarlo puede que no recuerdes para que era cada tarea programada.

La nomenclatura que hay que seguir es esta:

m h  dom mon dow   command

Cada uno de los parámetros significa esto:

  • "m": minutos, los valores que acepta van de 0 a 59
  • "h": hora, valores entre 0 y 23
  • "dom": día del mes (day of the month), los valores van de 1 a 31
  • "mon": mes, con valores de 1 a 12
  • "dow": día de la semana (day of the week) y los valores que acepta van de 0 a 7, donde el 0 y el 7 se refiere al Domingo.
  • comand: aquí seria donde especificamos el comando o archivo que queremos ejecutar, recuerda que hay que poner también la ruta donde esta el archivo o script en caso de que quieras ejecutar uno.

Otros caracteres especiales son estos:

  • @reboot: para ejecutar un comando o script durante el arranque de la Raspberry Pi
  • @annually: para ejecutar una tarea anualmente
  • @monthly: para ejecutar una tarea mensualmente
  • @weekly:para ejecutar una tarea semanalmente
  • @daily: para ejecutar una tarea diariamente
  • @hourly: para ejecutar una tarea cada hora 
  • #: para indicar comentarios
  • &: este caracter especial, si se pone al final de la instrucción de ejecución, hará que la tarea se ejecute en segundo plano, de este modo el arranque de la placa Raspberry Pi seguirá su curso y en segundo plano se ejecuta la tarea.

Además de los números únicos para cada uno de los primeros 5 parámetros, también puedes utilizar los siguientes formatos especiales:

  • Una secuencia de números, separados por una coma, por ejemplo: 0,15,30,45
  • Un rango, por ejemplo: 4-8
  • Una sucesión de rangos, por ejemplo: 0-15,30-45
  • Un asterisco, para indicar 'todo', por ejemplo: *
  • Para ejecutar cada n-veces agregando el sufijo "/c" donde "c" seria el numero, por ejemplo: */5 por cada 5 minutos.

Recuerda: No puedes usar los códigos cortos de tres letras en los rangos.

Estos serian algunos ejemplos:

  • * * * * * python /home/pi/Hola.pyejecuta el script python "Hola.py" cada minuto
  • 30 * * * * echo "Hola Scrip": saca por pantalla el mensaje "Hola Script" cada 30 minutos
  • 30 9 * * 5 python /home/pi/Hola.pyejecuta el scrip python todos los viernes a las 9:30 am
  • */15 * * * * echo "frecuencia de 15min"se ejecuta cada 15 minutos
  • @reboot python /home/pi/lectura_sensor.py: ejecuta el script python "lectura_sensor" cada vez que la placa Pi se reinicia

Una vez que hagas modificaciones en crontab es aconsejable que lo reinicies con este comando:

sudo /etc/init.d/cron restart

Como ves, puedes hacer de forma automática lo que quieras, comprobar el estado de sensores, publicar valores en una web, mandar emails cada cierto tiempo....lo que te imagines.

Si no estas seguro de los códigos numéricos que tienes que poner para tu proyecto, mira la web de CrontabGuru, podrás configurar diferentes combinaciones de códigos y te mostrará la frecuencia de ejecución.

Otro aspecto interesante de cron es el log de actividad donde se quedará registrado todo lo que hace, por defecto esta deshabilitado pero lo puedes habilitar de este modo:

sudo nano /etc/rsyslog.conf

En el archivo que se abre buscar la linea donde ponga #cron.* /var/log/cron.log, descomenta la linea quitando el # y reinicia el servicio de log así:

sudo /etc/init.d/rsyslog restart

Hasta aquí seria todo, buscaré otras opciones para realizar esto y las añadiré al articulo, aunque para mi, cron me resulta muy útil y fácil de manejar, espero que te guste!


Compartir esta publicación



← Publicación más antigua Publicación más reciente →