A resposta do Xer0FyT é provavelmente a maneira mais simples de iniciar automaticamente um programa no PI. Mas os problemas ocorrem quando o programa iniciado falha por qualquer motivo, porque não será reiniciado, pois não há monitoramento de processo. Pessoalmente, eu recomendaria o uso de daemontools . É bem simples de configurar (e está incluído no Raspbian). Basicamente, você cria um diretório de serviço que contém um run
script de shell que inicia seu programa. O daemontools garantirá que seu programa seja iniciado e reiniciado, caso ocorra uma falha por qualquer motivo.
Configurar daemontools é bastante simples. Somente
apt-get install daemontools daemontools-run
Em seguida, crie seu diretório de serviço contendo um script de execução executável:
# create the service directory
mkdir -p /service/my-service
# create the run script
cat > /service/my-service/run <<EOF
#!/bin/sh
echo "I'm an example service executed by daemontools"
sleep 1
# Replace those 2 lines with a real call to your program like this:
# exec /my/program.py --arguments
EOF
# make it executable
chmod 755 /service/my-service/run
Dê uma olhada /service/my-service/run
e edite-o, para que ele inicie seu próprio programa em vez de executar echo
. Feito isso, faça o link simbólico desse diretório para /etc/service
o daemontools automaticamente (re) o inicie:
cd /etc/service
ln -s /service/my-service .
Após cerca de 5 segundos, seu programa deve ser executado. Você pode iniciar / parar usando
# stop it
$ svc -d /service/my-service
# start it
$ svc -u /service/my-service
Também é possível fazer logon no (por exemplo) syslog. Portanto, a saída do seu programa não se perde. Eu escrevi um post de blog mais completo sobre isso aqui: https://info-beamer.com/blog/running-info-beamer-in-production
sudo
porrc.local
si só. É executado com privilégios de root na inicialização. Certifique-se de prestar atenção à parte sobre o uso, a&
menos que seu programa faça algo rapidamente e saia.