upstart로 데몬 종료 명령을 지정하는 방법은 무엇입니까?


9

시작 구성에서 서버를 종료하는 데 사용해야하는 명령을 어떻게 정의합니까? 두 개의 별도 프로세스가있는 데몬이 있다고 가정 해 보겠습니다.

  • startup.sh-서버를 시작합니다
  • shutdown.sh-서버를 종료합니다

다음과 같은 시작 파일이 있다고 가정하십시오.

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

shutdown.sh서버를 종료 할 때 호출해야한다고 upstart에 알리려면 어떻게해야 합니까? upstart는 일반적으로 데몬 종료를 어떻게 예상합니까?

답변:


10

exec프로세스 시작에 사용 하는 것은 좋지만 중지 할 때 특정 스크립트 또는 명령 세트를 실행해야하는 경우 pre-stop스탠자를 사용할 수 있습니다 .

pre-stop exec shutdown.sh

나는 당신이 exec 스탠자를 사용하려고 시도했지만 작동하지 않았다고 가정합니다. 데몬에는 특수 정리가 필요하기 때문일 수 있습니다. 제대로 작동하는 데몬은 작업이 중지 될 때 시작시 신호를 수신해야하며, 신호를 적절히 처리하는 경우 추가 정리가 필요하지 않습니다.

작업을 중지하려면 SIGTERM을 보내십시오. SIGTERM 전에 수행해야 할 작업이있는 경우 여기에서 수행하십시오. 서비스가 SIGTERM을 매우 우아하게 처리해야하므로 반드시 필요한 것은 아닙니다.

디스크 플러시와 같이 중요한 것이 있고 종료 시간 초과를 늘리는 것이 옵션이 아닌 경우 사전 중지는 나쁜 위치가 아닙니다.

또한 작업을 중지 할 때 발생하는 전체 워크 플로우에 대해서는 이 섹션 을 읽으십시오 . 사전 중지가 실행되는 시점과 이후 프로세스로 신호가 전송되는 방식에 주목하십시오. 이는 upstart가 작업 중지를 정상적으로 처리하는 방식입니다.

내 소스는 공식 Upstart 요리 책입니다 : http://upstart.ubuntu.com/cookbook/


1
"잘 작동하는 데몬은 작업이 중지 될 때 시작시 신호를 수신해야하며, 신호를 적절히 처리하면 추가 정리가 필요하지 않습니다." -우리는 유닉스 세계에서 프로그래머 작업 외에 다른 것들을 제어하기 위해 스크립트를 사용합니다. 이메일 전송, 잠금 해제 등을 포함 할 수있는 공간이 필요하기 때문에이 작업은 데몬 자체 일 필요가 없기 때문에 이것은 우스운 말입니다. 따라서 upstart는 서버 환경에 사용할 준비가되지 않았습니다.
kakaz

이 대답 (하나!)에서 우리가 필요한 것을 할 수있는 좋은 방법이 없다는 것을 알 수 있습니까?
kakaz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.