yocto 배포판에서 시작 시 실행하고 싶은 C++ 프로그램이 있습니다.
/etc/init.d/에 test.sh라는 간단한 스크립트를 추가해 보았습니다.
echo "start my program"
ProgramName
"ProgramName"을 사용하면 내 프로그램이 셸에서 실행될 때 실행됩니다. 이 새 스크립트를 실행하면 프로그램이 실행됩니다.
rc5 폴더에 심볼릭 링크로 추가했습니다. 다시 시작해 보았지만 아무 일도 일어나지 않았습니다. 제가 더 해야 할 일이 있나요?
레시피에 어떻게 적용할 수 있나요? 결국 나는 이것을 자동화하고 싶습니다.
답변1
시작 시 프로그램을 실행하는 간단한 해결책은 다음과 같이 crontab 항목을 만드는 것입니다.
@reboot /path/to/program
이것은 일반적으로 시스템 데몬이 아닌 프로그램에 충분합니다.
이 @reboot
태그는 시스템 시작 시 프로그램이 시작되고 지원되는지 확인합니다.최대크론 구현:
@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
확인하시기 바랍니다이 Q&A비슷한 토론을 해보세요. 스크립트에 헤더를 추가합니다.
#!/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입니다. 스크립트는 initlevels 2, 3, 5에서 시작하고 수준 0, 1, 6에서 중지됩니다.