У меня есть программа на 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.