Utilizzo di upstart con l'istanza sconosciuta stop


8

Sto solo iniziando, quindi ho scritto uno script molto semplice solo per stampare nel file di registro chiamato: vm-service.confche ho inserito /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

se corro sudo start vm-service, produce:

vm-service start/running, process 29034

Ma, quando corro sudo stop vm-service, genera:

stop: Unknown instance

Ho provato a correre sudo initctl reload-configuration, ma ho ancora l'errore all'arresto.

Ho guardato il libro di cucina ma probabilmente mi manca qualcosa di ovvio.

Risposte:


7

Upstart considererà il lavoro interrotto se termina il processo principale (cosa viene eseguito se vengono specificate le stanze script o exec). Upstart eseguirà quindi il processo post-avvio.

Quindi quello che sta succedendo è che il primo script è in esecuzione e in uscita, Upstart sta considerando che il lavoro è stato interrotto, quindi il secondo script è in esecuzione e in uscita. Se si esegue il comando di arresto su un processo già interrotto, stampa il messaggio visualizzato.

Per gestirlo, usa una stanza pre-avvio:

pre-start exec foo --bar

post-start exec baz --foo

in questo caso, Upstart vedrà il lavoro come avviato una volta terminata la stanza di pre-avvio e non come interrotto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.