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/./app
no genera ningún problema. Además, por supuesto, el autostart.sh
script 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:
Agregar
Type=oneshot
a 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 laStandardOutput
clave, que de forma predeterminada la envía al diario systemd.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/app
como 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.