Eu construí uma rede de sensores sem fio que consiste em dois Raspberry Pi (Rasnberry Raspbian) com sensores e uma estação base Raspberry Pi que coleta os dados.
Cada vez que quero executar o sistema, preciso fazer login em cada unidade de sensor e executar dois programas Python em loop, um para coletar dados do sensor e outro para transmitir à estação base.
Essas unidades estão indo para locais difíceis, sem acesso à Internet, então levar um monitor, teclado e mouse comigo para fazê-las funcionar não é exatamente fácil. Existe alguma maneira de configurá-los para efetuar login automaticamente, executar o programa 1 e executar o programa 2 automaticamente na inicialização?
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./path/to/somescript.sh &
pararc.local
, e no script, adicionewhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;
antes de iniciar seus programas.rc.local
sem executar o sudo antes. O que você sugere?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
Em seguida, crie seu diretório de serviço contendo um script de execução executável:
Dê uma olhada
/service/my-service/run
e edite-o, para que ele inicie seu próprio programa em vez de executarecho
. Feito isso, faça o link simbólico desse diretório para/etc/service
o daemontools automaticamente (re) o inicie:Após cerca de 5 segundos, seu programa deve ser executado. Você pode iniciar / parar usando
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
fonte
feche o aplicativo de configuração LXSession e reinicie seu pi
seu aplicativo java deve ser executado após a reinicialização
fonte
Você provavelmente já
cron
instalou algumas das tarefas de limpeza do PI.Pesquise
man 5 crontab
por@reboot
.fonte
Você pode querer pesquisar
service
. Você pode criar um script init que faça parte do init do sistema e colocá-lo em um nível de execução apropriado.Corra
man service
.Aqui está um guia para a criação de scripts init: http://www.novell.com/coolsolutions/feature/15380.html
fonte
systemd
da maioria das distribuições Linux, incluindo Raspbian, esta resposta terá atualização se o OP atualiza seu sistema para que assume a partir sysvinit
... 8- (Basta seguir este link .
Supondo que você tenha test.txt na área de trabalho, um exemplo pode ser:
e funciona!
fonte