
RESTful 서비스를 노출하는 Python 스크립트가 있습니다(Flask 프레임워크 사용). 이 서비스로 하고 싶은 것은 Python 스크립트의 최신 버전을 복제한 다음 main.py를 시작하는 것입니다.
init 레벨 3에서 시작될 수 있다는 것이 분명합니다. 그러나 init 정보가 정확히 어떻게 구성되어야 하는지 확신할 수 없으며 crontab을 다음과 같이 업데이트해도 괜찮은지 확실하지 않습니다.
sudo update-rc.d myservice enable 3
myservice 스크립트의 실제 내용은 다음과 같습니다.
#!/bin/sh
rm -fR /home/pi/myservicedir
git clone https://repo/code.git /home/pi/myservicedir
cd /home/pi/myservicedir
python main.py
답변1
귀하의 스크립트는 적절한 스크립트가 아닙니다 init.d
. /etc/init.d
시작 스크립트를 만드는 데 사용할 수 있는 템플릿 파일이 있을 수 있습니다 . 그렇지 않은 경우 /etc/init.d
배포에 사용되는 패턴을 찾으려면 의 다른 스크립트 중 일부를 살펴보세요 .
또는 rc.local
일반적으로 부팅 주기의 매우 늦게 실행됩니다. 이것은 시작 코드를 넣기에 적합한 장소입니다. 코드를 실행하기 전에 $1
is 값을 확인하세요 .start
서버는 에 나열된 순서대로 시작됩니다 /etc/rc3.d
. 종료 스크립트 시작은 K
먼저 어휘 순서로 실행된 다음 시작 스크립트 시작은 S
어휘 순서로 실행됩니다. 모든 것이 실행되고 있는지 확인하려면 시작 순서를 사용하십시오 99
.
배포판에는 디렉토리에 링크를 설치하고 제거하는 방법이 있어야 합니다 rc#.d
. 귀하의 경우에는 update-rc.d
. 이는 일반적으로 스크립트 상단의 주석 줄로 제어됩니다 init.d
.
man
필요한 프로그램과 파일을 설명하는 페이지가 있어야 합니다 . 실행해 man update-rc.d
보세요 man -k init
.
답변2
다음과 같이 $network를 지정합니다.
#!/bin/bash
### BEGIN INIT INFO
# Provides: mountftp
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Mount disk2
# Description: Mount disk2
### END INIT INFO