web-dev-qa-db-fra.com

Comment savoir combien de temps Watchdog doit attendre pour arrêter tous les processus?

J'ai un serveur qui est surveillé par Watchdog et connaît des redémarrages occasionnellement en raison d'un matériel réseau défectueux que je ne peux pas remplacer pour le moment. Comme je l'ai lu, Watchdog envoie un SIGTERM à tous les processus, demandant un arrêt sûr, et après un court laps de temps, envoie un SIGKILL, qui arrêtera le processus immédiatement. Cependant, dans ce cas, cela conduit à une corruption des données car le processus principal d'importance n'est pas encore complètement arrêté et contient des données non écrites.

Combien de temps cette pause Watchdog prend-elle entre demander à tous les processus de s'arrêter et les forcer à s'arrêter? Est-il câblé dans Watchdog, défini dans watchdog.conf (s'il l'était, il n'a jamais été documenté dans la page de manuel), ou identique à un autre paramètre système? Comment puis-je modifier ce paramètre?

Edit: j'ai trouvé le délai d'attente, mais je suis toujours à la recherche d'instructions sur la façon de reconstruire et d'intégrer correctement le système.

3
hexafraction

La version 5.15 officielle de Sourceforge a désormais cette option incluse. Il peut être configuré dans le fichier watchdog.conf en utilisant la ligne:

sigterm-delay = 5

(commenté dans le fichier d'exemple). Veuillez noter que la version expérimentale 'V6' ne devrait plus être utilisée car la 5.15 possède pratiquement toutes ses fonctionnalités et plusieurs corrections de bugs également. Notez également que le site Web `` sat '' pourrait être fermé plus tard en 2019 en raison du retrait du financement de la NERC.

1
Paul Crawford

J'ai publié quelques informations sur la construction, la configuration et le test du démon de surveillance Linux ici:

http://www.sat.dundee.ac.uk/~psc/watchdog/Linux-Watchdog.html

La réponse courte est que vous devez configurer votre système pour construire pour ce projet:

Sudo apt-get build-dep watchdog
Sudo apt-get install build-essential automake libtool

Ensuite, récupérez le code source, que vous avez probablement déjà, mais la dernière peut être effectuée avec ces étapes:

Sudo apt-get install git
git clone git://git.code.sf.net/p/watchdog/code watchdog-code

Accédez au répertoire de code et préparez la compilation:

cd watchdog-code
autoreconf -i
./configure

Puis dans le répertoire source et compilez-le:

cd src
make clean
make

Dans le répertoire actuel, vous aurez les nouveaux binaires. Testez-les avant de les faire "vivre" en utilisant Sudo make install, ou au moins faire des copies de sauvegarde des programmes fournis par le système. Ils sont gonflés par rapport à ceux du système en raison des symboles de débogage, vous pouvez utiliser la commande strip si vous souhaitez réduire leur taille.

Pouvez-vous indiquer le temps dont vous avez besoin pour que SIGTERM fonctionne?

Modifié pour ajouter:

Si vous utilisez l'extraction GIT actuelle (14 septembre 2013), modifiez shutdown.c et, à la ligne 363, changez "safe_sleep (4);" pour avoir votre valeur de délai d'attente souhaitée en secondes. Si vous modifiez le code du chien de garde fourni par le système (comme mentionné ci-dessus), veillez à ne pas dormir () pendant plus de la temporisation matérielle (normalement 60 secondes) car le système redémarrera simplement! C'était la raison de la fonction safe_sleep (), pour garder le chien de garde alimenté en attendant.

1
Paul Crawford

De la source Watchdog, shutdown.c, ligne 445 , la pause est câblée dans Watchdog et dure cinq secondes.

1
hexafraction