Cómo ejecutar un programa automáticamente al arrancar la Raspberry Pi

Lo reconozco, he caído en las garras de la Raspberry Pi. Estamos desarrollando un par de proyectos con ella en la empresa y, la verdad, está siendo divertido.

Raspberry Pi Logo

Raspberry Pi Logo

Una de las cosas que nos hemos encontrado es cómo hacer para que un programa se arranque automáticamente al empezar. Se podría hacer con un cron pero lo que nosotros necesitábamos era un programa que se ejecutara en segundo plano todo el tiempo.

El primer paso es crear un script que se encargue de arrancar nuestro software de manera automática. En nuestro caso era el script detector-init (para poner en marcha automáticamente un sensor de presencia). Para crearlo hacemos:

sudo nano /etc/init.d/detector-init

Y copiamos el siguiente contenido:

#! /bin/sh
# /etc/init.d/detector-init
 
### BEGIN INIT INFO
# Provides:          detector-init
# Required-Start:    $all
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Script de ejemplo de arranque automático
# Description:       Script para arrancar el detector de presencia
### END INIT INFO
 
 
# Dependiendo de los parámetros que se le pasen al programa se usa una opción u otra
case "$1" in
  start)
    echo "Arrancando detector-init"
    # Aquí hay que poner el programa que quieras arrancar automáticamente
    /usr/bin/python /home/pi/detector.py
    ;;
  stop)
    echo "Deteniendo detector-init"
 
    ;;
  *)
    echo "Modo de uso: /etc/init.d/detector-init {start|stop}"
    exit 1
    ;;
esac
 
exit 0

Un par de aclaraciones:

  • # Required-Start: $all – Con esto indicamos al sistema que primero cargue todos los demás módulos.
  • # Default-Start: 2 3 4 5 – Aquí le decimos al sistema en qué run levels queremos que se ponga en marcha nuestro script.

Ahora hacemos el fichero ejecutable:

sudo chmod 755 /etc/init.d/detector-init

Comprobamos que todo se ejecuta correctamente:

sudo /etc/init.d/detector-init start

Y por último activamos el arranque automático:

sudo update-rc.d detector-init defaults

Cuando se reinicie la Raspberry debería empezar a funcionar el programa de forma automática. Podemos comprobarlo haciendo:

ps aux | grep "detector.py"

(Porque detector.py es el programa que pone en marcha el script detector-init).

La solución la hemos sacado de aquí (de dónde he, practicamente, fusilado el artículo). ¡Gracias Martin!