init.d 스크립트에서 여러 명령 실행

init.d 스크립트에서 여러 명령 실행

다음 init.d 스크립트가 있습니다.

#! /bin/sh                                                                                          
### BEGIN INIT INFO                                                                                 
# Provides:          Django-Server                                                                  
# Required-Start:    $all                                                                           
# Required-Stop:                                                                                    
# Default-Start:     2 3 4 5                                                                        
# Default-Stop:      0 1 6                                                                          
# Short-Description: Django Server                                                                  
### END INIT INFO                                                                                   

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin                          

. /lib/init/vars.sh                                                                                 
. /lib/lsb/init-functions                                                                           
# If you need to source some other scripts, do it here                                              

case "$1" in                                                                                        
  start)                                                                                            
    log_begin_msg "Starting Django Server"                                                          
    python3 "/home/pi/Python Projects/episode_tracker/manage.py" runserver 0.0.0.0:12345  --insecure
    python3 "/home/pi/Python Projects/shifts_server/manage.py" runserver 0.0.0.0:23456  --insecure  
    log_end_msg $?                                                                                  
    exit 0                                                                                          
    ;;                                                                                              
  stop)                                                                                             
    log_begin_msg "Stopping Django Server"                                                          

    # do something to kill the service or cleanup or nothing                                        

    log_end_msg $?                                                                                  
    exit 0                                                                                          
    ;;                                                                                              
  *)                                                                                                
    echo "Usage: /etc/init.d/django_server {start|stop}"                                            
    exit 1                                                                                          
    ;;                                                                                              
esac  

stop현재로서는 유용한 작업이 수행되지 않고 있다는 것을 알고 있습니다 .

내 문제는 다음 줄에 있습니다.

python3 "/home/pi/Python Projects/episode_tracker/manage.py" runserver 0.0.0.0:12345  --insecure
python3 "/home/pi/Python Projects/shifts_server/manage.py" runserver 0.0.0.0:23456  --insecure  

어떤 이유로 첫 번째 항목만 실행됩니다. 첫 번째 항목에 주석을 달면 두 번째 항목이 실행됩니다(따라서 구문이 정확하고 경로가 존재하는 등).

중요한 경우 운영 체제는 Raspbian입니다.

답변1

manage.py runserver명령은 데몬으로 분기되지 않으므로 init 스크립트가 완료되기를 기다리고 있습니다. &두 줄의 끝에 추가하여 두 배경을 모두 만들 수 있습니다 .

python3 "/home/pi/Python Projects/episode_tracker/manage.py" runserver 0.0.0.0:12345  --insecure &
python3 "/home/pi/Python Projects/shifts_server/manage.py" runserver 0.0.0.0:23456  --insecure &

관련 정보