Запустить программу при загрузке

Запустить программу при загрузке

У меня есть программа на C++, которую я хочу запустить во время загрузки дистрибутива Yocto.

Я попробовал добавить простой скрипт в /etc/init.d/ под названием test.sh, в котором у меня есть только:

echo "start my program"
ProgramName

с "ProgramName", моя программа запускается, когда я запускаю на оболочке. Если я запускаю этот новый скрипт, он заставляет мою программу запуститься.

Я добавил его как символическую ссылку в папку rc5. Я попробовал перезагрузить, но ничего не происходит. Нужно ли мне что-то еще делать?

Как мне заставить это работать с рецептом. В конце концов, я хотел бы, чтобы это было автоматизировано.

решение1

Простым решением для запуска программы при загрузке является создание для нее записи в crontab следующим образом:

@reboot /path/to/program

Обычно этого достаточно для программ, не являющихся системными демонами.

Тег @rebootгарантирует, что программа запустится после загрузки системы и поддерживаетсябольшинствоРеализации 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 * * * *". 

Более подробную информацию смотрите man 5 crontabв вашей системе.

решение2

пожалуйста, проверьтеэтот вопрос/ответдля подобного обсуждения. И добавьте заголовок в ваш скрипт:

#!/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

решение3

В ваш рецепт добавьте:

  • INITSCRIPT_NAME и добавьте имя файла скрипта инициализации, который необходимо установить, в etc/init.d.
  • INITSCRIPT_PARAMS и укажите уровень запуска вашего скрипта, а также уровни инициализации, на которых должен запускаться скрипт.

Например, вы можете сослаться на файл в "poky/meta/recipes-connectivity/connman/connman.inc". Вы увидите следующий пример использования.

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

В приведенном выше фрагменте скрипт connman устанавливается в ect/init.d, а уровень выполнения скрипта равен 05. ​​Скрипт запускается на уровнях инициализации 2, 3 и 5 и останавливается на уровнях 0, 1 и 6.

Связанный контент