\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{jeu. févr. 12 19:36:33 CET 2015}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={watchdog},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={service watchdog},
CreationDate={D:20150212193633},
ModDate={D:20150212193633},
Keywords={GNU;GNU/Linux;configuration}
}}
\begin{document}
 
\begin{center}
{\Huge watchdog }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large service watchdog}
 
\vspace{10mm}
 
\vspace{1cm}{\huge Description }
 
\
 
\hspace{1mm}  Le noyau linux peut réinitialiser le système si des problèmes sérieux sont détectés. Cela peut être implémenté via le hardware spécial watchdog, ou via un watchdog logiciel légèrement moins fiable dans le kernel. Dans tous les cas, un service doit dire au kernel que tout va bien. Si le service ne le fait plus, le système est réinitialisé.
\vspace{5mm} \\
 
 
\hspace{1mm}  Watchdog est un service qui ouvre \textbf{/dev/watchdog}, et maintient une écriture aussi souvent que possible pour empêcher le noyau de se réinitialiser, au moins une fois par minute. Chaque écriture retarde le temps de reboot d'une minute. Au bout d'une minute d'inactivité, le système est réinitialisé. Dans le cas d'un watchdog logiciel, la capacité de rebooter le système dépend de l'état de la machines et des interruptions.
\vspace{5mm} \\
 
 
\hspace{1mm}  Le service watchdog peut être stoppé sant reboot si le périphérique \textbf{/dev/watchdog} est fermé correctement, sauf si le kernel a été compilé avec l'option CONFIG\_WATCHDOG\_NOWAYOUT.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Tests }
 
\
 
\hspace{1mm}  Le service Watchdog effectue de nombreux tests pour vérifier le status du système:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{Est-ce que la table des processus est pleine?}
\item[\hspace{1mm} -]{Y'a t'il suffisamment de mémoire vive?}
\item[\hspace{1mm} -]{Y'a t'il suffisamment de mémoire allouable?}
\item[\hspace{1mm} -]{Est-ce que certains fichiers sont accessibles?}
\item[\hspace{1mm} -]{Est-ce que certains fichiers ont changés dans l'intervalle de temps donné?}
\item[\hspace{1mm} -]{Est-ce que la charqe système est trop élevée?}
\item[\hspace{1mm} -]{Est-ce qu'un débordement de table de fichier se produit?}
\item[\hspace{1mm} -]{Est-ce qu'un processus fonctionne (identifié par un fichier pid)?}
\item[\hspace{1mm} -]{Est-ce qu'une adresse IP répond aux ping?}
\item[\hspace{1mm} -]{Est-ce que les interfaces réseaux reçoivent du trafic?}
\item[\hspace{1mm} -]{Est-ce que la température est trop élevée?}
\item[\hspace{1mm} -]{Exécute une commande utilisateur pour effectuer des tests arbitraires.}
\item[\hspace{1mm} -]{Exécute une commande de test/réparation.}
\end{description}
 
\hspace{1mm}  Si une de ces vérifications échouent, le système s'éteind. Si un de ces tests, excepté les commandes utilisateurs, dépassent une minute, la machine est redémarrée.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -v, --verbose]{mode verbeux}
\item[\hspace{1mm} -s, --sync]{tente de synchroniser le système de fichier à chaque fois que le processus et réveillé.}
\item[\hspace{1mm} -b, --softboot]{soft boot le système si une erreur se produit durant la boucle principale. par ex, si un fichier n'est pas accessible via l'appel stat(). Ne s'applique pas à /dev/watchdog et /proc/loadavg.}
\item[\hspace{1mm} -F, --foreground]{Ne passe pas en tâche de fond}
\item[\hspace{1mm} -f, --force]{Force l'utilisation de l'intervalle donné ou la charge moyenne maximale dans la configuration.}
\item[\hspace{1mm} -c config-file, --config-file config-file]{Spécifie le fichier de configuration au lieu du défaut /etc/watchdog.conf}
\item[\hspace{1mm} -q, --no-action]{Ne reboot pas et n'arrête pas la machine.}
\end{description}
 
\vspace{1cm}{\huge Fonctions }
 
\
 
\hspace{1mm}  Une fois watchdog démarré, il se place en tâche de fond et tente toutes les vérifications spécifiées dans sa configuration. Entre chaque test il écris dans le périphérique kernel pour empêcher un reset. Une fois tous les tests terminés, watchdog s'endors un certain temps. Le périphérique kernel s'attend à une écriture par minute pour empêcher un reset. Par défaut, watchdog est lancé toutes les secondes pour gérer le périphérique le plus tôt possible.
\vspace{5mm} \\
 
 
\hspace{1mm}  Sous de forte charges système, watchdog peut avoir été swappé et peut échouer à revenir à temps. Dans ce cas le kernel va réinitialiser la machine. l'option \textbf{realtime} s'assure qu'il ne sera jamais swappé. Sur les systèmes n'ayant plus de mémoire vive disponible, le kernel va tenter de libérer de la mémoire en tuant des processus. watchdog est exempt de ce système.
\vspace{5mm} \\
 
 
\hspace{1mm}  Watchdog tente également périodiquement de se forker lui-même pour voir si la table des processus n'est pas pleine. Ce processus va laisser un processus zombie jusqu'à ce que watchdog de réveil, c'est un fonctionnement normal.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Soft reboot }
 
\
 
\hspace{1mm}  Un soft reboot (shutdown et reboot contrôlé) est initié pour toute erreur qui est trouvée. Vu qu'il peut ne plus y avoir d'autres processus disponible, watchdog fait tout par lui-même. Cela signifie:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1.]{Tuer tous les processus avec un SIGTERM}
\item[\hspace{1mm} 2.]{Tuer tous les processus restant avec un SIGKILL}
\item[\hspace{1mm} 3.]{Enregistre un shutdown dans wtmp}
\item[\hspace{1mm} 4.]{Sauve la valeur aléatoire de /dev/urandom si possible}
\item[\hspace{1mm} 5.]{Désactive l'accounting}
\item[\hspace{1mm} 6.]{Désactive les quota et le swap}
\item[\hspace{1mm} 7.]{Démonte toutes les partitions sauf /}
\item[\hspace{1mm} 8.]{Remonte root en lecture-seule}
\item[\hspace{1mm} 9.]{Éteins toutes les interfaces réseaux}
\item[\hspace{1mm} 10.]{Reboot}
\end{description}
 
\vspace{1cm}{\huge Binaire de vérification }
 
\
 
\hspace{1mm}  Si le code de retour du binaire de vérification n'est pas 0, watchdog assume une erreur et reboot le système. Les valeurs de retour suivants ont une signification particulière:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 255]{Reboot le système.}
\item[\hspace{1mm} 254]{Réinitialise le système}
\item[\hspace{1mm} 253]{Surcharge système}
\item[\hspace{1mm} 252]{Température trop élevée}
\item[\hspace{1mm} 251]{/proc/loadavg ne contient pas de données ( ou trop peu)}
\item[\hspace{1mm} 250]{Le fichier donné n'a pas été changé dans l'intervalle donné}
\item[\hspace{1mm} 249]{/proc/meminfo contient des données invalides}
\item[\hspace{1mm} 248]{Processus enfant tué par un signal}
\item[\hspace{1mm} 247]{Processus enfant n'a pas retourné dans le temps impartis}
\item[\hspace{1mm} 246]{libre pour une utilisation spécifique}
\item[\hspace{1mm} 245]{Réservé pour un résultat inconnu.}
\end{description}
 
\vspace{1cm}{\huge Binaire repair }
 
\
 
\hspace{1mm}  Le binaire repair est lancé avec un paramètre: le numéro d'erreur qui a causé watchdog d'initier le processus de boot. Après avoir tenté de réparer le système le binaire devrait quitter avec le code 0 si le système à été réparé avec succès, sinon watchdog reboot. Le code de retour devrait être le code d'erreur qui cause watchdog a rebooter.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Répertoire test }
 
\
 
\hspace{1mm}  Les exécutables dans le répertoire de test sont découverts par watchdog au démarrage et sont automatiquement exécutés. Ces exécutables sont appelé soit avec "test" comme premier argument ( si un test est effectué ), ou "repair" (si une réparation pour un test précédent doit être effectué). Si une opération de test échoue, le même exécutable est appelé avec l'argument repair avec le code de retour de l'opération précédente en tant que second argument.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Fichiers }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} /etc/watchdog.conf]{Fichier de configuration de watchdog}
\item[\hspace{1mm} /etc/watchdog.d]{répertoire contenant les commandes test ou repair.}
\end{description}
\end{flushleft}
\end{document}
