Eu tenho um programa c++ que desejo que seja executado no momento da inicialização em uma distribuição yocto.
Tentei adicionar um script simples em /etc/init.d/ chamado test.sh no qual tenho apenas:
echo "start my program"
ProgramName
com "ProgramName", meu programa é executado quando executo em um shell. Se eu executar esse novo script, meu programa será executado.
Eu adicionei como link simbólico para a pasta rc5. Tentei reiniciar, mas nada acontece. Preciso fazer mais alguma coisa?
Como posso fazer isso funcionar com uma receita. No final, eu gostaria que isso fosse automatizado.
Responder1
Uma solução simples para executar um programa na inicialização é criar uma entrada crontab para ele assim:
@reboot /path/to/program
Isso geralmente é adequado para programas que não são daemons de sistema.
A @reboot
tag garantirá que o programa seja iniciado quando o sistema for inicializado e seja compatível commaioriaimplementações do cron:
@reboot Run once, at startup.
@yearly Run once a year, "0 0 1 1 *".
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *".
@weekly Run once a week, "0 0 * * 0".
@daily Run once a day, "0 0 * * *".
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *".
Para obter mais informações, consulte man 5 crontab
em seu sistema.
Responder2
por favor, verifiqueesta pergunta/respostapara discussão semelhante. E adicione cabeçalho no seu script:
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Sample_GT02 daemon startup script
# Description: Sample Server for GT02 class
### END INIT INFO
Responder3
Na sua receita adicione:
- INITSCRIPT_NAME e adicione o nome do arquivo do script de inicialização que você precisa instalar em etc/init.d.
- INITSCRIPT_PARAMS e especifique o nível de execução do seu script e os níveis de inicialização nos quais o script deve ser executado.
Por exemplo, você pode consultar o arquivo em "poky/meta/recipes-connectivity/connman/connman.inc". Você verá o seguinte exemplo de uso.
INITSCRIPT_NAME = "connman"
INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."
No trecho acima, o script connman está sendo instalado em ect/init.d e o script tem um nível de execução 05, o script começa nos níveis de inicialização 2, 3 e 5 e para nos níveis 0, 1 e 6.