init.d 네트워킹이 완전히 작동할 때 init.d에서 서비스를 시작하는 방법은 무엇입니까?

init.d 네트워킹이 완전히 작동할 때 init.d에서 서비스를 시작하는 방법은 무엇입니까?

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일반적으로 부팅 주기의 매우 늦게 실행됩니다. 이것은 시작 코드를 넣기에 적합한 장소입니다. 코드를 실행하기 전에 $1is 값을 확인하세요 .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

관련 정보