Quand j’allume mon serveur après qu’il se soit éteint pour l’une ou l’autre raison, j’ai souvent pluseirus services qui rechignent à démarrer, m’obligeant à les lancer à la main. Est-il possible de créer un script qui détecte puis relance les services qui ont échoué à leur démarrage de manière automatisée ?
C’est quand même étonnant ce comportement et il vaudrait mieux savoir pourquoi ils ne redémarrent pas correctement plutôt que d’essayer d’y apporter une rustine.
Les services sont bien censé être lancés au démarrage? Tu peux le vérifier en consultant la valeur de start_on_boot pour chaque service avec la commande:
yunohost service status
Autrement oui c’est sans doute faisable en consultant le status des services avec par exemple pour dovecot:
grep Active <(systemctl status dovecot)
Et si le retour n’est pas Active, alors le lancer. Mais franchement, je pense qu’il faut voir d’où vient ton problème d’origine.
Il y a certainement plus simple mais sur l’idée que j’ai mentionné, tu peux t’inspirer de ceci:
service=$(grep -v ' ' /etc/yunohost/services.yml | cut -d':' -f1)
for alive in $service;do if grep -q Active <(systemctl status $alive);then echo "$alive is not dead";fi;done
A adapter en fonction du retour du service qui ne démarre pas en remplaçant Active (failed? Inactive? je te laisse vérifier ce qu’il y a en retour pour un service qui ne démarre pas, attention à la casse minuscule ou majuscule), là c’est un exemple sur les services qui tournent correctement. il faudra remplacer la commande echo par
yunohost service start $alive
Mais sais-tu pourquoi les services échouent leur démarrage? Le problème est là.