En fait, je ne suis pas sûr de savoir si je dois utiliser des scripts shell ou s'il existe déjà des moyens. Mais quelle que soit l'approche que nous utilisons, je voudrais que le service fonctionne tout le temps.
Disons par iptables
exemple. Ensuite ..
- Chaque fois que le
iptables
service eststopped
ou (en d'autres termes) ne fonctionne pas, je veux qu'il soitstarted
(ourestarted
) .. automatiquement chaque fois qu'il s'arrête (ou ne fonctionne pas). - En d'autres termes plus simples, je veux maintenir un service opérationnel tout le temps.
(Peut-être que je pourrais donner une fréquence correcte pour vérifier, si la vérification en temps réel est le problème. Disons donc, toutes les 5 minutes)
La seule façon dont je pouvais penser, est d'utiliser des scripts Shell avec Cron Tab.
- Y a-t-il une solution intelligente s'il vous plaît?
Merci!
alerts
vous avez sur quelque chose qui ne fonctionne pas.restarted
chaque fois qu'il s'arrête, pour une raison quelconque. Pas de problème de redémarrage.Réponses:
Mise à jour mars 2018
Cette réponse est maintenant assez ancienne, et depuis qu'elle a été écrite, systemd a remporté la guerre pid1 sous Linux. Ainsi, vous devriez probablement créer une unité systemd , si systemd est intégré à votre distribution (qui est la plupart d'entre eux).
La réponse ci-dessous est conservée pour la postérité.
La réponse ci-dessus est valide, mais j'ai pensé mentionner quelques alternatives:
Il convient de garder à l'esprit que votre système d'exploitation a déjà résolu le problème de gestion des processus. Traditionnellement, Linux a utilisé sysvinit, qui est essentiellement la collection de scripts que vous voyez dans init.d. Cependant, c'est assez stupide et ne peut pas surveiller les processus, les scripts init.d sont compliqués et il est remplacé pour une bonne raison.
Des systèmes d'exploitation plus modernes commencent à remplacer sysvinit, et les leaders sont Upstart et Systemd. Debian penche vers systemd, Ubuntu a été développé et a déjà pratiquement évolué vers Upstart, et comme Debian Redhat / CentOS / Fedora se dirige vers systemd. Ainsi, si vous utilisez un système d'exploitation qui a déjà remplacé sysvinit, je recommanderais d'utiliser ce qui est intégré. Les scripts sont beaucoup plus faciles à écrire que les scripts d'initialisation.
J'ai utilisé runit et j'aime bien, mais le plus simple à utiliser est superviseur. Il est également très bien documenté, fonctionne presque partout et est inclus dans toutes les principales distributions.
Mais quoi que vous fassiez, s'il vous plaît, s'il vous plaît, veuillez ne pas utiliser de script shell. Il y a tellement de problèmes avec cette approche!
la source
iptables
est un mauvais exemple car ce n'est pas vraiment un service ou un démon en cours d'exécution, mais une partie du noyau. Vous ne pouvez pas vraiment "arrêter"iptables
, vous pouvez seulement lui donner une configuration et "arrêter" cela implique de lui donner une configuration vierge. En effet, j'ai fait planter des systèmes Linux, mais la configuration de la redirection de port en utilisantiptables
continue de fonctionner.Quoi qu'il en soit, un utilitaire appelé
monit
fera ce que vous voulez. Si vous utilisez Debian, c'estapt-get install monit
loin. C'est un peu compliqué à apprendre mais très flexible.la source
Nous utilisons ce script simple pour lancer une alerte et démarrer le service s'il n'est pas en cours d'exécution, vous pouvez également ajouter d'autres services.
la source
Solution alternative pour le bureau (KDE):
Nous pouvons regarder un service avec l' état du serveur Applet / Widget ... après l'avoir installé, ajoutez simplement une commande dans le widget pour surveiller votre service
Exemple :
systemctl status httpd.service
Version de KDE 4: https://store.kde.org/content/show.php?content=101336
Version de KDE 5: https://store.kde.org/p/1190292/
la source
Je sais que cela fait plusieurs années que la question n'a pas été posée. mais avec le systemd (principalement disponible avec centos et REHL), vous pouvez exécuter cette commande bash avec cron pour vérifier et redémarrer si le service est en panne.
enregistrez-le dans votre répertoire bin et nommez-le comme moniteur. Donnez-lui l'autorisation de fichier appropriée. puis lancez-le comme
si vous souhaitez vérifier le service redis et redémarrer / démarrer si nécessaire.
Enfin, ajoutez ceci à votre travail cron.
j'espère que cela vous aidera
la source
Pour ajouter à la longue liste de supervision init / svc, en tant que sous-répertoire de S6, il y a un nouvel enfant sur le bloc, 66, qui gère la gestion des services s6 et la journalisation d'une manière rapide, légère et conviviale. Ceci est le lien vers la documentation officielle d'Obarun-Linux https://web.obarun.org/software
Ceci est une FAQ sur la façon d'utiliser ce logiciel 66 et de donner un sens à s6 http://sysdfree.wordpress.com/266
Depuis sa version stable, un seul bug a été trouvé concernant les changements de noyau de 4.20 -> 5.0, tous les autres problèmes signalés concernaient les personnes apprenant quelque chose de nouveau. Si la gestion des services devait devenir plus simple que cela, il serait préférable de passer à ms-windows (Linus l'interdit). Pour voir dans la vraie vie comment cela peut fonctionner, il suffit de télécharger un Obarun live.iso et de jouer avec. Installez les services et leurs 66 scripts pour les activer, les tuer, voir leurs journaux, les arrêter et les démarrer (lorsqu'ils sont activés), regrouper les services dans une arborescence et avoir des arborescences de service démarrer et arrêter tous ensemble, disposer de services de niveau utilisateur séparément du système. Il fait ce que s6 fait bien et rend plus simple pour l'utilisateur d'exploiter le système pare-balles sous s6.
Les téléchargements d'images peuvent être trouvés ici: https://web.obarun.org/index.php?id=74 fichiers de contrôle md5 https://repo.obarun.org/iso/
Hormis la gestion d'init et de service, s6 / 66 n'a pas de dépendances de quoi que ce soit d'autre sur le système. Il s'agit d'une couche du système de base laissant le reste du logiciel fonctionner seul, init / svc-mgmt en aveugle. Tous les s6 et 66 sont écrits en C et ils ne sont pas spécifiques à Linux ou à la glibc. Les serveurs de Skarnet (auteurs s6) fonctionnent depuis près d'une décennie sans beaucoup de pauses sur le système musl personnalisé. Alpine, Void et Adelie ont actuellement également un logiciel s6 sur leurs référentiels, Adelie l'utilise par défaut pour la supervision des services. Void en contient désormais 66 également. Je ne sais pas si et dans quelle mesure quelqu'un a porté s6 sur xxBSD ou d'autres systèmes xxIX.
la source