Uso de arranque con detención de instancia desconocida

8

Me acaba de entrar en advenedizo Así que escribí un guión muy básico sólo para imprimir a archivo de registro llamado: vm-service.confque puse en /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

si corro sudo start vm-service, sale:

vm-service start/running, process 29034

Pero, cuando corro sudo stop vm-service, sale:

stop: Unknown instance

He intentado ejecutar sudo initctl reload-configuration, pero sigo recibiendo el error al detener.

He mirado el libro de cocina pero probablemente me falta algo obvio.

adviner
fuente

Respuestas:

7

Upstart considerará el trabajo detenido si el proceso principal (lo que se ejecuta si se especifican las secuencias de comandos de ejecución o exec) se cierra. Upstart ejecutará el proceso posterior al inicio.

Entonces, lo que está sucediendo es que el primer script se está ejecutando y saliendo, Upstart está considerando que el trabajo se detuvo, luego el segundo script se está ejecutando y saliendo. Si ejecuta el comando de detención en un trabajo ya detenido, imprime el mensaje que vio.

Para manejar esto, use una estrofa previa al inicio:

pre-start exec foo --bar

post-start exec baz --foo

si hace esto, Upstart verá el trabajo como iniciado una vez que finalice la estrofa previa al inicio, y no como detenido.

CameronNemo
fuente