J'ai un service systemd qui affiche l'erreur suivante service start request repeated too quickly, refusing to start
Je comprends que le service est configuré pour redémarrer en cas d'échec et qu'il redémarre encore et encore. Mais quand refuse-t-il exactement de redémarrer? Y a-t-il une limite ou un nombre qui le définit?
De plus, qu'est-ce que too quickly
signifie exactement, est-ce une limite du nombre de redémarrages dans une période de temps donnée?
La limite par défaut est d'autoriser 5 redémarrages dans une période de 10 secondes. Si un service dépasse ce seuil en raison de Restart=
option de configuration dans la définition de service, il ne tentera plus de redémarrer.
Les tarifs sont configurés avec le StartLimitIntervalSec=
et StartLimitBurst=
options et Restart=
option contrôle quand SystemD essaie de redémarrer un service.
Plus d'informations in man systemd.unit
et man systemd.service
.
Utilisez ensuite systemctl daemon-reload
pour recharger la configuration de l'unité.
Il est à noter que certains défauts semblent déclencher cette erreur, alors que la cause est différente.
J'ai commenté le bantime par défaut et inséré une alternative en ligne **bantime = 7200 #3600**
J'ai également ajouté une nouvelle section [sasl], qui comprenait un nom de filtre qui avait changé de celui donné dans l'article que je suivais.
Au lieu de commettre des erreurs sur l'un ou l'autre, fail2ban a refusé de redémarrer,
demande de démarrage du service répétée trop rapidement, refus de démarrer l'erreur
Ce n'est que lorsque j'ai commenté la section [sasl] que j'ai eu une erreur qui faisait référence à un bantime invalide, dont j'ai déduit qu'il ne pouvait pas faire face aux commentaires en ligne.
Lorsque j'ai corrigé cela et commenté la nouvelle section [sasl], j'ai reçu une erreur indiquant que le filtre était introuvable. La substitution du filtre correctement nommé a entraîné le rechargement de fail2ban comme prévu.
Donc, si vous apportez des modifications et obtenez cette erreur, assurez-vous de supprimer les modifications et d'obtenir toujours la même erreur avant d'essayer de corriger un problème.
Vous ne spécifiez pas quel service ne démarre pas avec cette erreur.
J'ai eu ce problème avec fail2ban
, et comme dans le réponse de MickG , l'erreur était en fait dans ma configuration fail2ban, et n'avait rien à voir avec la configuration du service systemd.
Avec fail2ban, la solution est de le démarrer avec
fail2ban-client -x start
qui affichera un message d'erreur détaillé. Pour une raison quelconque, lorsque vous utilisez systemctl start fail2ban
l'erreur réelle est perdue et ne peut être trouvée dans aucun journal.
Une fois l'erreur de configuration corrigée, le service peut à nouveau être arrêté ou (re) démarré avec systemd.
Une façon rapide et sale que je viens d'utiliser pour ce même problème est d'avoir créé un script wrapper bash qui dort afin que le service ne démarre pas aussi rapidement. Fonctionne pour moi car je n'ai pas besoin des redémarrages immédiats ..
/root/sleep_and_start_autossh.sh
/bin/bash -e
sleep 200
/usr/bin/autossh args...
/etc/systemd/system/autossh.service
StartLimitIntervalSec=120 # this didn't seem to do much for me.
#ExecStart=/usr/bin/autossh args ...
ExecStart=/root/sleep_and_start_autossh.sh