Skonfiguruj działania odzyskiwania, które będą wykonywane po awarii usługi

10

Zainstalowałem wiele naszych niestandardowych usług pisemnych na Windows Boxach (nie ma znaczenia, czy XP, Server, Vista). Zawsze konfiguruję „Uruchom ponownie usługę” w przypadku pierwszej, drugiej i kolejnych awarii. Ale nigdy nie widziałem tego dzieła; usługa po prostu zatrzymuje się (z powodu błędu lub czegoś w kodzie), ale nie uruchamia się ponownie.

Właśnie zauważyłem pole wyboru „Włącz akcje dla zatrzymań z błędami”. Czy należy to sprawdzić, aby odzyskiwanie miało wpływ na niepowodzenie spowodowane błędem?

dzięki Mark.

M. Schenkel
źródło

Odpowiedzi:

3

Jeśli Twoje usługi zatrzymują się z powodu błędu, który jest rejestrowany przez system Windows, to tak, musisz zaznaczyć opcję „Włącz akcje dla zatrzymań z błędami”, w przeciwnym razie nie zadziała.

Jeśli ta opcja nie jest zaznaczona, spowoduje to ponowne uruchomienie usług, które zostały zatrzymane z uzasadnionych lub nieznanych przyczyn.

Sam Cogan
źródło
1
Dzięki - pomyślałem, że tak. Ale pomyślałem, że „Błąd” to to samo, co „awaria”, a zatem usługa powinna była zostać uruchomiona bez zaznaczania pola.
M Schenkel,
Wydaje się to trochę dziwne, zgadzam się, ponieważ większość powodów niepowodzenia usługi, którą uważasz za błąd.
Sam Cogan
2
W przypadku usług, które zostały zatrzymane z „uzasadnionych” powodów, nigdy nie zostanie uruchomiona żadna akcja odzyskiwania. Ta odpowiedź wciąż wprowadza zamieszanie w terminach „stop” i „błąd”.
matpop
3
Ktokolwiek w Microsoft, który napisał ten język, powinien być bez końca chłostany za ich niekompetencję.
Brain2000
16

Pole wyboru „Włącz akcje dla zatrzymań z błędami” zostało wprowadzone w systemie Windows Vista i Windows Server 2008, zapewniając pojedynczą, kłopotliwą linię dokumentacji :

Wybierz opcję Włącz akcje dla zatrzymań z błędami , aby wyzwolić działania odzyskiwania, które usługa zatrzymała z błędem.

SC.exe Program został również zaktualizowany w celu uzyskania nowej komendy: failureflag. Dokumentacja pokazuje zły przykład i tak naprawdę nie dotyczy systemu Windows Server 2003, ale mówi, że komendy:

Określa, czy działania odzyskiwania zostaną uruchomione, gdy usługa zatrzyma się w wyniku błędu.

Tak więc pole wyboru i sc failureflagsłużą do ustawienia tej samej flagi.
Wpiszmy sc failureflagw wierszu polecenia, w końcu otrzymujemy całkiem przyzwoity opis:

Zmienia ustawienie flagi działania niepowodzenia usługi. Jeśli to ustawienie wynosi 0 (domyślnie), Menedżer sterowania usługami (SCM) włącza skonfigurowane działania niepowodzenia w usłudze tylko wtedy, gdy proces usługi zakończy się z usługą w stanie innym niż SERVICE_STOPPED. Jeśli to ustawienie wynosi 1, SCM włącza skonfigurowane działania niepowodzenia dla usługi, jeśli usługa przejdzie w stan SERVICE_STOPPED z kodem wyjścia Win32 innym niż 0 oprócz zakończenia procesu usługi, jak powyżej. To ustawienie jest ignorowane, jeśli usługa nie ma skonfigurowanych żadnych działań związanych z błędem.

Podobny opis można znaleźć tutaj .
Tak więc poprawna odpowiedź na pierwotne pytanie brzmi: skonfigurowane działania odzyskiwania zawsze działają, gdy usługa nie kończy się w stanie SERVICE_STOPPED. „Włącz akcje dla zatrzymań z błędami” należy zaznaczyć, jeśli musisz włączyć akcje odzyskiwania również wtedy, gdy usługa wchodzi w stan SERVICE_STOPPED, pod warunkiem, że kod wyjścia nie jest równy 0 (błąd).

matpop
źródło
2
Wyrazy uznania za bardzo pomocną odpowiedź!
Tim Lovell-Smith