Raspbian Jessie: o script de inicialização não funciona

Raspbian Jessie: o script de inicialização não funciona

Estou executando o Raspbian Jessie Lite no RPi3. Criei um arquivo em /etc/systemd/system/autostart.service:

[Unit]
Description=Application

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

[Install]
WantedBy=multi-user.target

O serviço está habilitado corretamente e realmente executado. Aqui está a fonte do meu script de inicialização:

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

Meu aplicativo é executado, mas tem comportamentos estranhos, enquanto executá-lo a partir de um console raiz /home/pi/bin/./appnão causa problemas. Além disso, é claro, o autostart.shscript permanece em execução até o término da minha aplicação.

Para corrigir os dois problemas tentei executá-lo em segundo plano, adicionando &no final. Ou apenas tentei redirecionar a saída para um arquivo adicionando &> /home/pi/log.txt. Em ambos os casos, meu aplicativo não é mais executado!

o que estou perdendo?

Responder1

Você pode estar sentindo falta destas coisas:

  1. Adicione Type=oneshotà seção [Serviço]. Não há necessidade de colocá-lo em segundo plano, e redirecionar a saída para um arquivo não funcionará no arquivo de configuração. A saída já foi capturada e redirecionada usando a StandardOutputchave, cujo padrão é enviá-la para o diário do systemd.

  2. Além disso, simplesmente criar o arquivo não o executa, você também deve habilitá-lo. Correr

    systemctl enable autostart
    

Também observarei que você acaba executando /home/pi/bin/appcomo root, o que pode não ser o que você deseja por segurança. A menos que seja necessário executá-lo como root, considere executar seu aplicativo como outro usuário.

informação relacionada