저는 이제 막 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에서는 작업이 중지되지 않고 시작된 것으로 표시됩니다.