Używanie upstart z zatrzymaniem nieznanej instancji


8

Właśnie zaczynam pracę, więc napisałem bardzo prosty skrypt, aby wydrukować do pliku dziennika o nazwie: vm-service.confwstawiam /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

jeśli uruchomię sudo start vm-service, wyświetli:

vm-service start/running, process 29034

Ale kiedy uruchamiam sudo stop vm-service, wyświetla:

stop: Unknown instance

Próbowałem uruchomić sudo initctl reload-configuration, ale nadal pojawia się błąd przy zatrzymaniu.

Spojrzałem na książkę kucharską, ale prawdopodobnie brakuje mi czegoś oczywistego.

Odpowiedzi:


7

Upstart uzna, że ​​zadanie zostało zatrzymane, jeśli główny proces (który jest uruchamiany, jeśli podano sekcje skryptu lub exec) zostanie zakończony. Upstart uruchomi następnie proces po uruchomieniu.

Tak więc dzieje się to, że pierwszy skrypt działa i kończy pracę, Upstart rozważa zatrzymanie zadania, a następnie drugi skrypt działa i kończy pracę. Jeśli uruchomisz polecenie stop dla już zatrzymanego zadania, wydrukuje on wyświetlony komunikat.

Aby poradzić sobie z tym, użyj zwrotki przedstartowej:

pre-start exec foo --bar

post-start exec baz --foo

jeśli to zrobisz, Upstart zobaczy zadanie jako rozpoczęte po zakończeniu sekcji przedstartowej, a nie jako zatrzymane.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.