Hacer que un programa se inicie al arrancar

Hacer que un programa se inicie al arrancar

Tengo un programa en C++ que quiero que se ejecute en el momento del arranque en una distribución yocto.

Intenté agregar un script simple en /etc/init.d/ llamado test.sh en el que solo tengo:

echo "start my program"
ProgramName

con "ProgramName", mi programa se ejecuta cuando lo ejecuto en un Shell. Si ejecuto este nuevo script, mi programa se ejecutará.

Lo agregué como enlace simbólico a la carpeta rc5. Intenté reiniciar pero no pasa nada. ¿Necesito hacer algo más?

¿Cómo puedo hacer que esto funcione con una receta? Al final, me gustaría tener esto automatizado.

Respuesta1

Una solución simple para ejecutar un programa en el arranque es crear una entrada crontab como esta:

@reboot /path/to/program

Esto suele ser adecuado para programas que no son demonios del sistema.

La @rebootetiqueta garantizará que el programa se inicie cuando el sistema se haya iniciado y sea compatible conmayoríaimplementaciones de 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 obtener más información, consulte man 5 crontaben su sistema.

Respuesta2

por favor, compruebeesta pregunta/respuestapara una discusión similar. Y agregue el encabezado en su 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

Respuesta3

En tu receta agrega:

  • INITSCRIPT_NAME y agregue el nombre de archivo del script de inicialización que necesita instalar en etc/init.d.
  • INITSCRIPT_PARAMS y especifique el nivel de ejecución de su script y los niveles de inicio en los que debe ejecutarse el script.

Por ejemplo, puede consultar el archivo en "poky/meta/recipes-connectivity/connman/connman.inc". Verá el siguiente ejemplo de uso.

    INITSCRIPT_NAME = "connman"
    INITSCRIPT_PARAMS = "start 05 5 2 3 . stop 22 0 1 6 ."

En el fragmento anterior, el script connman se está instalando en ect/init.d y el script tiene un nivel de ejecución de 05, el script comienza en los niveles iniciales 2, 3 y 5, y se detiene en los niveles 0, 1 y 6.

información relacionada