Impostare le azioni di ripristino da eseguire in caso di errore di un servizio


10

Ho installato molti dei nostri servizi scritti personalizzati su Windows Box (non importa se XP, Server, Vista). Configuro sempre su "Riavvia il servizio" al 1 °, 2 ° e successivi errori. Ma non ho mai visto questo lavoro; il servizio si arresta semplicemente (a causa di un errore o qualcosa del codice) ma non si riavvia.

Ho appena notato la casella di controllo "Abilita azioni per soste con errori". È necessario verificarlo affinché il ripristino abbia effetto se l'errore è stato causato da un errore?

grazie, Mark.

Risposte:


3

Se i tuoi servizi si interrompono a causa di un errore, che viene registrato da Windows, allora sì, devi selezionare "Abilita azioni per soste con errori", altrimenti non funzionerà.

Se non si seleziona questa opzione, verranno riavviati solo i servizi che sono stati interrotti per motivi legittimi o sconosciuti.


1
Grazie - l'ho immaginato. Ma avrei pensato che "Errore" sarebbe la stessa cosa di un "fallimento", e quindi il servizio avrebbe dovuto iniziare senza selezionare la casella.
M Schenkel,

Mi sembra un po 'strano, sono d'accordo, poiché la maggior parte delle ragioni per cui un servizio fallirebbe, potresti pensare che sia un errore.
Sam Cogan,

2
Nessuna azione di recupero deve mai essere attivata su servizi che sono stati interrotti per motivi "legittimi". Questa risposta crea ancora confusione sui termini "stop" e "fallimento".
matpop,

3
Chiunque in Microsoft abbia scritto questa lingua dovrebbe essere continuamente frustato per la sua incompetenza.
Brain2000,

16

La casella di controllo "Abilita azioni per arresti con errori" è stata introdotta con Windows Vista e Windows Server 2008, fornendo un'unica riga di documentazione imbarazzante :

Selezionare Abilita azioni per arresti con errori per attivare le azioni di ripristino che il servizio ha interrotto con un errore.

Lo SC.exe programma è stato anche aggiornato per fornire un nuovo comando: failureflag. La documentazione mostra un cattivo esempio e non si applica realmente a Windows Server 2003, ma ci dice che il comando:

Specifica se le azioni di ripristino verranno attivate quando un servizio si arresta a seguito di un errore.

Quindi, la casella di controllo e sc failureflagvengono utilizzati per impostare lo stesso flag.
Digitiamo sc failureflagil prompt dei comandi, finalmente otteniamo una descrizione abbastanza decente:

Modifica l'impostazione del flag delle azioni di errore di un servizio. Se questa impostazione è 0 (impostazione predefinita), Service Control Manager (SCM) abilita le azioni di errore configurate sul servizio solo se il processo del servizio termina con il servizio in uno stato diverso da SERVICE_STOPPED. Se questa impostazione è 1, SCM abilita le azioni di errore configurate sul servizio se il servizio entra nello stato SERVICE_STOPPED con un codice di uscita Win32 diverso da 0 oltre alla conclusione del processo di servizio come sopra. Questa impostazione viene ignorata se nel servizio non sono configurate azioni di errore.

Una descrizione simile può essere trovata qui .
Pertanto, la risposta corretta alla domanda originale è: le azioni di ripristino configurate hanno sempre effetto quando il servizio non termina nello stato SERVICE_STOPPED. È necessario selezionare "Abilita azioni per arresti con errori" se è necessario abilitare le azioni di ripristino anche quando il servizio entra nello stato SERVICE_STOPPED, a condizione che il codice di uscita non sia 0 (errore).


2
Complimenti per una risposta molto utile!
Tim Lovell-Smith,
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.