web-dev-qa-db-fra.com

comment utiliser le chien de garde logiciel linux

Salut quelqu'un peut-il me dire comment gérer le chien de garde logiciel sous Linux .J'ai un programme "SampleApplication" qui fonctionne en continu et je dois le redémarrer s'il se bloque ou se ferme de manière inattendue.

J'étais en train de googler à ce sujet et j'ai trouvé que Linux avait watchdog dans/dev/watchdog mais je ne savais pas comment l'utiliser. Quelqu'un pourrait-il m'aider avec un exemple?.

Ma question est où je spécifie mon nom d'application et l'intervalle de retard pour redémarrer. Comme je suis nouveau sur linux, merci de m'écrire avec un échantillon si possible. Merci

16
Verve Innovation

La plupart des programmes Unix/Linux init gèrent les démons pour vous et les redémarrent. Cherchez à placer votre service dans /etc/inittab. Ou vous utilisez peut-être Upstart ou systemd.

Tous ces programmes s’exécutent en tant que PID 1 et leur tâche consiste à surveiller et à redémarrer les processus système.

À partir de votre tag Busybox, je suppose que vous utilisez un système intégré. Sur ceux-ci, les scripts d'initialisation de style System V avec tous leurs scripts Shell sont vraiment excessifs. Vous devriez probablement extraire tout cela et le remplacer par des entrées dans les tâches /etc/inittab ou upstart ou systemd.

13
Zan Lynx

Puisque les modérateurs ignorent les améliorations postérieures, je vais devoir les publier séparément.

Le chien de garde logiciel Linux va redémarrer la machine, pas seulement redémarrer votre processus.

Eh bien, ce n'est tout simplement pas vrai, il est très possible de redémarrer un ou plusieurs processus après que le chien de garde signale que les systèmes sont en panne - vous pouvez même ABANDONNER le redémarrage ou effectuer un redémarrage SOFT, vous pouvez configurer "test" repair "-scripts/binaries qui font ce que vous voulez qu'ils fassent. La version busybox de Watchdog est réduite à un niveau presque inutilisable ... Je suppose que le monde ne saura jamais pourquoi les développeurs busybox ont décidé d'abandonner les fonctionnalités principales - pour le moment, il serait préférable d'éviter tout busybox - > les améliorations de vitesse sont quasi inexistantes, la réduction de taille ne compense pas la perte de fonctionnalité énorme./bin/bash est plutôt petit - recompilez tout avec le drapeau "-Os" si la taille compte et que vous êtes prêt à partir - un chien de garde prêt à l'emploi qui permet à peu près tout ce que l'on peut désirer.

Oh et VEUILLEZ NE PAS créer votre propre chien de garde - cela vous laissera très probablement avec des erreurs non gérées et vous rendra la vie dure un jour.

15
nope

Que diriez-vous d'utiliser Cron? Configurez un petit travail cron qui s'exécute toutes les minutes. Vérifiez si votre application est active (avec ps) et, dans le cas contraire, redémarrez-la.

Faites un petit script comme ça:

#!/bin/bash
if [ ! "$(pidof myapp)" ] 
then
  /path/to/myapp &
fi

Vous testez si "myapp" est dans la liste des processus. "!" inverse le test. Si ce n'est pas là, il lance "myapp". "&" est juste pour qu'il commence en arrière-plan.

Ajoutez ceci à cron. Selon votre système et vos préférences, il existe plusieurs façons de le faire. Le classique consiste à utiliser crontab. Il y a beaucoup de documentation sur la façon de spécifier votre ligne crontab, mais vous voulez probablement quelque chose comme ça:

* * * * * /path/to/the/script.sh > /dev/null

Cela exécutera votre test chaque minute, chaque heure de chaque… Vous avez l’idée.

8
Janne

Utilisez /etc/inittab vous pouvez l’utiliser pour démarrer dans des niveaux d’exécution spécifiques et s’il est tué, il sera redémarré automatiquement.

n:2345:respawn:/path/to/app

Cela le fera réapparaître aux niveaux d'exécution 2345, vous n'aurez probablement besoin que de 3 et 5, mais cela fonctionnera correctement et est intégré à Linux.

4
darren102

La documentation pour le chien de garde est ici: http://linux.die.net/man/8/watchdog

Mais on dirait que ce n’est pas ce que vous voulez. Le chien de garde logiciel Linux va redémarrer la machine, pas seulement redémarrer votre processus.

Vous pouvez facilement faire votre propre chien de garde. Par exemple, vous pouvez demander à votre programme d'écrire périodiquement un fichier temporaire et de lancer un script qui vérifie le fichier de temps en temps et redémarre votre processus s'il n'est pas mis à jour depuis un certain temps. 

2
TJD

Si vous utilisez systemd, il existe 2 chiens de garde: un pour le matériel (en utilisant systemd.conf ou en utilisant un démon de chien de garde) et un pour les démons initialisés en tant que services . Si systemd est votre option, examinez les éléments suivants: http://0pointer.de/blog/projects/watchdog.html

1
fabatera

Vous pouvez essayer wdog, un utilitaire écrit en c ++ et lié au framework Kahless_9. Le code source de cette opération peut être téléchargé à partir de: https://github.com/zepher999/wdog et par conséquent mis à jour pour répondre à vos propres besoins. Certaines modifications de la liste TODO doivent encore être apportées pour l’avenir, mais doivent également répondre à vos exigences actuelles.

L'utilitaire nécessite un fichier csv en entrée dans lequel tous les processus à surveiller avec leurs arguments sont contenus. Au démarrage, l'utilitaire démarre tous les processus désignés dans le fichier csv et les surveille pour les sorties/terminaisons, puis redémarre le processus. 

Actuellement, wdog permet l’arrêt/la suppression des processus surveillés ainsi que la possibilité de démarrer l’utilitaire en mode chaud ou froid. Le mode Hot permet à l'utilitaire d'utiliser les enregistrements mis en cache pour surveiller les processus déjà démarrés, tandis que le démarrage en mode froid ignore ces valeurs mises en cache, tentant ainsi de démarrer tous les processus.

L'utilitaire a également la possibilité de lancer une instance de lui-même pour se surveiller, disposant ainsi d'un chien de garde pour le chien de garde.

0
zepher

Vous pouvez utiliser l'utilitaire "Monit" pour redémarrer et surveiller vos services . Installez-le simplement en exécutant la commande `" apt-get install monit ".

0
Akki

Si quelqu'un est arrivé sur cette page à la recherche d'un chien de garde du système d'exploitation (ce qui n'est pas directement ce que le PO voulait), voici ce dont vous avez besoin:

Sudo apt-get install watchdog
service watchdog status
service watchdog start 

Pour vérifier que cela fonctionne, exécutez:

tail -f /var/log/syslog | grep watchdog

Vous devriez voir quelque chose comme:

Jul 25 22:03:35 nuc watchdog[14229]: still alive after 733 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 734 interval(s)
Jul 25 22:03:36 nuc watchdog[14229]: still alive after 735 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 736 interval(s)
Jul 25 22:03:37 nuc watchdog[14229]: still alive after 737 interval(s)

J'espère que je réponds correctement à la question. Toutes les autres réponses semblent être très différentes.

0
Sridhar-Sarnobat