71 votes

Comment redémarrer automatiquement un service Windows s'il tombe en panne ?

J'ai un service Windows qui s'arrête de manière inattendue tous les quelques jours. Existe-t-il un moyen simple de le surveiller pour s'assurer qu'il est redémarré rapidement en cas de panne ?

96voto

JCCyC Points 583

Sous l'application Services, sélectionnez les propriétés du service en question.

Regardez l'onglet de récupération - il y a toutes sortes d'options - je mettrais Premier et Deuxième échec pour redémarrer le service, Troisième pour exécuter un programme batch qui BLAT envoie un courriel avec la troisième notification d'échec.

Vous devez également régler le paramètre Reset Fail Count sur 1 pour réinitialiser le compte d'échec quotidiennement.

EDITAR:

On dirait que vous pouvez le faire via une ligne de commande :

SC failure w3svc reset= 432000  actions= restart/30000/restart/60000/run/60000
SC failure w3svc command= "MyBatchFile.cmd"

Votre fichier MyBatchFile.CMD peut ressembler à ceci :

blat - -body "Service W3svc Failed" -subject "SERVICE ERROR" -to Notify@Example.com -server SMTP.Example.com -f Administrator@Example.com

4 votes

Toutes les bonnes choses, mais +1 surtout pour le conseil de notification par courriel et les trucs en ligne de commande.

1 votes

Où le fichier batch doit-il se trouver sur le disque ?

1 votes

N'importe où. Avec SC failure w3svc command= "MyBatchFile.cmd" il doit se trouver dans le chemin ou C:\Windows\System32. Vous pouvez le placer dans n'importe quel répertoire si vous utilisez un chemin d'accès complet, par exemple. SC failure w3svc command= "c:\Stuff\MyBatchFile.cmd"

10voto

jeremyasnyder Points 201

Ouvrez Services.msc, double-cliquez sur le service pour ouvrir les propriétés du service, il y a un onglet Recovery et ces paramètres devraient vous permettre de redémarrer le service en cas d'échec.

9voto

MSS Points 181

Essayez de mettre le temps de récupération à zéro :

enter image description here

L'équivalent en ligne de commande :

SC failure YOUR_SERVICE_NAME reset= 0 actions= restart/0/restart/0/restart/0

Cependant, il arrive que la récupération automatique ne fonctionne pas correctement et il est recommandé d'utiliser un logiciel tiers. Il semble que lorsque le service se termine de manière élégante avec un code de sortie de 0, Windows n'essaie pas de le récupérer.

3voto

Anderson Points 21

J'avais une exigence similaire pour démarrer un service s'il était arrêté. La solution la plus simple que j'ai trouvée est d'exécuter la commande ci-dessous dans le planificateur de tâches de Windows toutes les 5 minutes :

net start MyServiceName

Cette commande va essentiellement démarrer le service (s'il est arrêté) et n'a aucun effet si le service est déjà en cours d'exécution.

2voto

J'utilise ServiceKeeper sur mon serveur Windows 2008 chez HostForLife.eu et il fonctionne très bien. Auparavant, j'ai fait une critique sur ServiceHawk, mais je préfère utiliser ServiceKeeper pour sa gestion plus facile et son interface.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X