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!

18 thoughts on “Cómo ejecutar un programa automáticamente al arrancar la Raspberry Pi

  1. Gracias por compartir Tu conocimiento, seguí la publicación de “Cómo ejecutar un programa automáticamente al arrancar la Raspberry Pi” tal como dice el artículo, pero tengo un problema cuando se comprueba la ejecución con el comando (sudo /etc/init.d/detector-init start), me sale el siguiente error:

    pi@raspberrypi ~ $ sudo /etc/init.d/Neno.save start

    Starting progama
    /etc/init.d/Neno.save: 21: /etc/init.d/Neno.save: /home/pi/ejem.py: Permission denied

  2. He probado el script y funciona perfectamente cuando por consola le doy start o stop, pero cuando hago el reboot no se inicia. Hay algun otro comando de unix para habilitarlo

  3. El script funciona a la perfeccion en consola si le escibo start o stop, pero al iniciar o reiniciar la Raspberry Pi no funciona el pograma, algo que me falte? descibo brevemente el programa, al activarse una entrada manda un email…alguien que pudiera ayudarme? Gracias

  4. Buen post, me sirve con un programa simple de pulsar un boton y encender un led.
    Pero no me funciona con otro programa donde uso un sensor con comunicacion I2C y ademas estoy guardando con una funcion la hora exacta del sistema.
    Alguna idea de porque no funciona, como ya dije funciona con otros programas y el rato de usar uno en especial que usa I2C no funciona.
    Gracias

  5. Hola de nuevo el programa que decía si funciona, pero lo que hace es crear archivos .txt, alguna idea de porque no los crea cuando se hace que se ejecute automaticamente.
    Nota: el mismo programa si funciona cuando lo ejecuto normalmente.

  6. El programa me funciono bastante bien con eso del arranque, lo único que no pude es detener el programa, pero bueno ese no es problema. Lo utilice para generar 6 PWM. Muchas gracias por el aporte.

  7. Hola no se me puso en el reinicio me puso esto

    pi@raspberrypi ~ $ sudo update-rc.d detector-init defaults
    update-rc.d: using dependency based boot sequencing
    insserv: Script detector-init is broken: missing end of LSB comment.
    insserv: exiting now!
    update-rc.d: error: insserv rejected the script header

  8. Hola, buenas tardes, estoy haciendo un proyecto en el cual necesito programar con Python. La idea es que al pulsar unos botones (6), dependiendo de cuales presione, necesito obtener una salida en audio, no puedo tener monitores. Obvio, esta permitido el uso de los puertos GPIO, no se como iniciar a hacer el proyecto ya que necesito que el programa se ejecute solo y no se como hacer para que esto pase y quede listo para el uso después de encendida la raspberry si alguien tiene una idea seria de gran ayuda, muchas gracias.

  9. me recomiendan tshark para debian sin interfaz gráfico? voy a capturar paquetes tcp ip.
    me gustaría saber si por si solo captura TX – RX o hay que asignarlo?

  10. Hola tengo un leve problema, tengo un código para cargar datos a mysql, pero no inicia. Lo he probado hasta en el rc.local, pero solo me funciona Raspbian 7, pero en Raspbian 8 no funciona. Implemente tu ejemplo, muestra que inicia; cuando verifico con ps aux | grep… y no esta iniciado.

  11. Hola buen día, al momento de ejecutar
    sudo/etc/init.d/detector-init start
    me sale el siguiente error
    /usr /bin/python: can´t open file ‘/home/pi/detector.py’ : [Errno 2] No such file or directory

    Ojala me puedes ayudar por que me urge, gracias

Deja un comentario