busybox를 사용하여 시작 후 프로그램을 자동으로 실행하는 방법은 무엇입니까?

busybox를 사용하여 시작 후 프로그램을 자동으로 실행하는 방법은 무엇입니까?

나는 busybox와 함께 임베디드 Linux를 사용하고 있습니다. "myApplication"(시작 후 실행 수준 5, 모든 서비스가 시작됨)이라는 응용 프로그램을 자동으로 실행하고 싶습니다.

지금까지 내가 한 일:

  • /etc/init.d/ 아래에 S90myscript라는 스크립트를 만들었습니다.
  • 그런 다음 inittab에 다음 줄을 추가했습니다.

::sysinit:/etc/init.d/S90myscript

스크립트에는 다음이 포함됩니다.

! /bin/sh
### BEGIN INIT INFO
# Provides: myApplication
# Should-Start: $all
# Required-Start: $remote_fs $network $local_fs
# Required-Stop: $remote_fs
# Default-Start: 5
# Default-Stop: 0 6
# Short-Description: start myprogram at boot time
### END INIT INFO
#

set -e

. /lib/lsb/init-functions
PATH=/root:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/sbin
PROGRAMNAME="myApplication"
case "$1" in
start)
$PROGRAMNAME
;;
stop)
skill $PROGRAMNAME
;;
esac
exit 0

내가 뭐 놓친 거 없니? 심볼릭 링크? 내가 뭐 잘못 했어요?

미리 감사드립니다

답변1

해결책을 찾았습니다.

  1. 나는 myApplication넣었다/usr/sbin/
  2. 다음 위치에 있는 스크립트에 myApp이라는 심볼릭 링크를 생성했습니다 ( 해당 스크립트에서 실행 /etc/init.d/S99myAppScript 해야 하는 .sh가 없다는 점에 유의하세요 ).sudo chmod 755
  3. 명령 앞의 파일 끝에 rcS다음 줄을 추가했습니다 ./etc/init.d/done

    myApp &
    

시스템을 다시 시작하면 myApplication이 자동으로 실행됩니다.

답변2

  1. 어디든 신청서를 배치하세요. 제 경우에는 전체 경로가 /root/myApplication입니다.
  2. /etc/init.d의 모든 init 스크립트는 번호순으로 하나씩 실행됩니다. 따라서 스크립트 이름을 S99myAppScript 또는 S98myAppScript로 설정하는 것이 가장 좋습니다. 다른 모든 스크립트 이후에 내 스크립트를 실행하고 싶기 때문입니다.
    #!/bin/sh
    # see about BusyBox init https://www.halolinux.us/embedded-systems/busybox-init.html
    
    # Make sure the application exists
    [ -f /root/myApplication ] || exit 0
    
    umask 077
    
    start() {
        echo "Start application:"
        /root/myApplication & # <-- Don't forget the "&" otherwise other system stuff won't start until you leave your app !!!
    }
    stop() {
        killall -q myApplication
    }
    restart() {
        stop
        start
    }
    
    case "$1" in
      start)
        start
        ;;
      stop)
        stop
        ;;
      restart|reload)
        restart
        ;;
      *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    esac
    
    exit $?

바라보다반품.

  1. 컴퓨터를 다시 시작하거나 종료할 수 없는 이유는 무엇입니까? 정전을 방지하기 위해 프로그램을 자동으로 실행합니다.

애플리케이션을 종료할 때까지 "&" 또는 기타 시스템 항목이 시작되지 않는다는 점을 잊지 마세요!

관련 정보