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

0

Eu estou executando o Raspbian Jessie Lite no RPi3. Eu 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á corretamente habilitado e realmente executado. Aqui 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 o executa a partir de um console raiz, pois /home/pi/bin/./app não gera problemas. Além disso, é claro, o script autostart.sh permanece em execução até que meu aplicativo seja encerrado.

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, minha inscrição não é mais executada!

O que estou perdendo?

    
por Mark 31.08.2016 / 23:35

1 resposta

0

Você pode estar sentindo falta dessas coisas:

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

  2. Além disso, a simples criação do arquivo não é executada, você também precisa ativá-lo. Executar

    systemctl enable autostart
    

Também observarei que você acaba executando /home/pi/bin/app como 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.

    
por 02.09.2016 / 21:27