>

Upstart 스크립트를 사용하여 Python 응용 프로그램을 Linux 서비스로 설정했습니다.

description "AAE client app"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
env PATH=/home/ec2-user/aae_client/env/bin
env PROGRAM_NAME="aae"
env USERNAME="ec2-user"
# Main script to be run
script
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Ready to run..." >> /var/log/$PROGRAM_NAME.sys.log
    export HOME="/home/ec2-user"
    echo $$ > /var/run/$PROGRAM_NAME.pid
    cd /home/ec2-user/aae_client
    exec python -m app.run >> /var/log/$PROGRAM_NAME.sys.log 2>&1
end script

sys.exit 에서 서비스를 중지하고 싶습니다  일부 예외가 발생하여 파이썬 코드 내에서 호출됩니다.

if not config_path:
    logger.error('Environment variable AAE_CLIENT_CONFIG_PATH is not set')
    sys.exit()

와이즈 위즈  현재 프로세스를 종료했지만 어떻게 든 서비스가 계속 부활합니다. 내가 sys.exit 를 실행하면  계속해서 새 PID로 서비스가 실행되고 있음을 보여줍니다.

코드 내에서 서비스를 완전히 중단시키는 방법이 있습니까?

status [service]
  • 답변 # 1

    짧은 대답은 프로세스가 종료 될 때마다 프로세스를 다시 생성한다는 것입니다. 그게 respawn 입니다  지시어입니다.

    재 스폰하고 싶지만 즉시하지 않으려면 정지 후 지연을 추가 할 수 있습니다.

    업 스타트 요리 책의 "작업 지연 지연"섹션에 다음 예제가 있습니다 :

    respawn
    exec mydaemon
    post-stop exec sleep 10
    
    

    서비스에 적합한 것으로 수면을 수정할 수 있습니다.

  • 이전 how to increase/decrease number using + & - +&를 사용하여 숫자를 늘리거나 줄이는 방법 - 기호 ?? php에서
  • 다음 Angular 6 typescript의 객체 배열에서 단일 속성에 어떻게 액세스합니까?