upstart를 사용하여 알 수 없는 인스턴스 중지

upstart를 사용하여 알 수 없는 인스턴스 중지

저는 이제 막 Upstart를 시작하고 있으므로 다음과 같은 로그 파일을 인쇄하기 위해 매우 기본적인 스크립트를 작성 vm-service.conf했습니다 /etc/init.

description "Virtual Images"
author      "Me"

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


script
echo "DEBUG: `set`" >> /tmp/vm-service.log

end script


pre-stop script
    echo "DEBUG: `set`" >> /tmp/vm-service.log
end script

을 실행하면 sudo start vm-service다음과 같이 출력됩니다.

vm-service start/running, process 29034

그러나 실행하면 다음과 같이 sudo stop vm-service출력됩니다.

stop: Unknown instance

달리려고 시도했지만 sudo initctl reload-configuration중지하면 여전히 오류가 발생합니다.

나는 본 적이레시피그러나 나는 아마도 분명한 것을 놓치고 있는 것 같습니다.

답변1

기본 프로세스(스크립트 또는 exec 섹션이 지정된 경우 실행되는 프로세스)가 종료되면 Upstart는 작업이 중지된 것으로 간주합니다. 그러면 Upstart가 출시 후 프로세스를 실행합니다.

따라서 무슨 일이 일어나고 있는지는 첫 번째 스크립트가 실행되고 종료되고 Upstart가 작업 중지를 고려한 다음 두 번째 스크립트가 실행되고 종료되는 것입니다. 중지된 작업에 대해 중지 명령을 실행하면 표시되는 메시지가 인쇄됩니다.

이 문제를 처리하려면 사전 부팅 섹션을 사용하십시오.

pre-start exec foo --bar

post-start exec baz --foo

이렇게 하면 사전 시작 섹션이 완료되면 Upstart에서는 작업이 중지되지 않고 시작된 것으로 표시됩니다.

관련 정보