모든 작업이 완료되면 부팅 시 루트로 스크립트를 실행합니다.

모든 작업이 완료되면 부팅 시 루트로 스크립트를 실행합니다.

베어본 Linux 배포판이 포함된 IoT 장치가 있습니다. 아니요 crontab, chkconfig또는 update-rc.

장치의 모든 항목이 로드된 후 장치가 부팅될 때 스크립트를 어떻게 실행합니까? 스크립트를 추가할 수 있다고 생각했는데 /etc/init.d아무 일도 일어나지 않는 것 같습니다. 이것이 내가 사용하는 스크립트입니다.

#! /bin/sh -e
# /etc/init.d/camstart

. /etc/init.d/functions.sh

start() {
    /usr/local/packages/application/myapp
}

stop() {
    kill `pidof myapp`
    kill `pidof myappinternal`
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    status)
        pidof myapp
        pidof myappinternal
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart}"
esac

exit 0

내가 가진 또 다른 아이디어는 를 사용하는 것이었지만 /etc/rc.local장치에 해당 파일이 없습니다. rc?.d1~6부터 S까지의 폴더 가 있습니다 . 둘 중 하나에 스크립트를 넣는 것은 아무런 효과가 없는 것 같습니다.

어떤 제안이 있으십니까?

편집: 어떤 Linux 배포판인지는 잘 모르겠지만 확인 결과 /etc/*releaseYocto 프로젝트의 Poky를 기반으로 한 것으로 나타났습니다. /proc/versionLinux 버전 4.9.62 부터 시작됩니다.

내가 아는 한 서비스를 systemctl시작 하는 데 사용됩니다 systemd.

EDIT2: 언급하는 것을 잊었습니다. systemd내 스크립트에 대한 서비스를 작성하고 이를 사용하여 시작하려고 시도했지만 systemctl start app즉시 종료됩니다 exit code 0.

애플리케이션 서버:

[Unit]
Description=app
After=acap-pre.target
Requires=acap-pre.target

[Service]
Slice=extension-acap.slice
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/app start
ExecStop=/etc/init.d/app stop

최종 편집: 확인한 후에는 정상적으로 작동합니다.시스템 시작 스크립트를 작성하는 방법내 것이 systemd service없어진 걸 발견했어요

[Install]
WantedBy=multi-user.target

답변1

런레벨 3에서 데몬을 자동으로 시작하는 과정은 간단합니다:

  1. 스크립트를 에 넣고 /etc/init.d,
  2. 스크립트의 권한과 소유권을 확인하고,
  3. /etc/rc3.d다음 이름을 사용하여 스크립트에 대한 심볼릭 링크를 만듭니다 S99scriptmame.

S방법서비스 시작. 이 숫자는 01(가장 높은 우선순위 스크립트) 부터 99(마지막 우선순위 스크립트) 까지 서비스 시작 순서의 순위를 매기는 데 사용됩니다 .

/etc/rc0.d/etc/rc6.d아마도 명명된 (stop) 및 (restart) 에서 스크립트 링크를 생성해야 하는 경우일 것입니다 K01scriptname. 일반적으로 마지막으로 시작된 데몬이 가장 먼저 중지됩니다.

바라보다man init.d^1완전한 설명을 위해.

관련 정보