Faça um programa iniciar na inicialização

Faça um programa iniciar na inicialização

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 @reboottag 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 crontabem 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.

informação relacionada