Raspbian Jessie: el script de inicio no funciona

Raspbian Jessie: el script de inicio no funciona

Estoy ejecutando Raspbian Jessie Lite en RPi3. Creé un archivo en /etc/systemd/system/autostart.service:

[Unit]
Description=Application

[Service]
User=root
ExecStart=/home/pi/autostart.sh

[Install]
WantedBy=multi-user.target

El servicio está correctamente habilitado y efectivamente ejecutado. Aquí la fuente de mi script de inicio:

#!/bin/sh
aplay -c2 -r48000 -fS16_LE < /dev/zero &
chmod 1777 /tmp
hciconfig hci0 up
/home/pi/bin/./app

Mi aplicación se ejecuta pero tiene comportamientos extraños, mientras la ejecuto desde una consola raíz /home/pi/bin/./appno genera ningún problema. Además, por supuesto, el autostart.shscript permanece en ejecución hasta que finalice mi solicitud.

Para solucionar ambos problemas, intenté ejecutarlo en segundo plano y lo agregué &al final. O simplemente intenté redirigir la salida a un archivo agregando &> /home/pi/log.txt. ¡En ambos casos mi aplicación ya no se ejecuta!

¿Qué me estoy perdiendo?

Respuesta1

Es posible que te estés perdiendo estas cosas:

  1. Agregar Type=oneshota la sección [Servicio]. No es necesario ponerlo en segundo plano y, de todos modos, redirigir la salida a un archivo no funcionará en el archivo de configuración. La salida ya se captura y redirige usando la StandardOutputclave, que de forma predeterminada la envía al diario systemd.

  2. Además, simplemente crear el archivo no se ejecuta, también debe habilitarlo. Correr

    systemctl enable autostart
    

También notaré que terminarás ejecutándote /home/pi/bin/appcomo root, lo que puede no ser lo que deseas por seguridad. A menos que sea necesario ejecutarla como root, considere ejecutar su aplicación como otro usuario.

información relacionada