부팅 시 프로그램 시작

부팅 시 프로그램 시작

나는 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에서 중지됩니다.

관련 정보