web-dev-qa-db-fra.com

Quels sont les concepts de "tampon d'anneau du noyau", "niveau utilisateur", "niveau journal"?

J'ai souvent vu les mots "tampon d'anneau du noyau", "niveau utilisateur", "niveau journal" et quelques autres mots apparaissent ensemble. par exemple.

/ var/log/dmesg Contient des informations sur le tampon d'anneau du noyau.

/var/log/kern.log Contient uniquement les messages du noyau de tout niveau de journal

/var/log/user.log Contient des informations sur tous les journaux de niveau utilisateur

S'agit-il uniquement de journaux? Comment sont-ils liés et différents?

Par "niveau", j'imagine une hiérarchie de plusieurs niveaux?

Le "niveau utilisateur" est-il lié à "l'espace utilisateur"?

Sont-ils liés à niveau d'exécution ou anneau de protection d'une manière ou d'une autre?

39
Tim

Oui, tout cela a à voir avec la journalisation. Non, rien de tout cela n'a à voir avec le niveau d'exécution ou "anneau de protection".

Le noyau conserve ses journaux dans un tampon en anneau. La raison principale en est que les journaux du démarrage du système sont enregistrés jusqu'à ce que le démon syslog ait la possibilité de démarrer et de les collecter. Sinon, aucun journal ne serait enregistré avant le démarrage du démon syslog. Le contenu de ce tampon en anneau peut être vu à tout moment à l'aide de la commande dmesg, et son contenu est également enregistré dans /var/log/dmesg juste au démarrage du démon syslog.

Tous les journaux qui ne proviennent pas du noyau sont envoyés au fur et à mesure qu'ils sont générés vers le démon syslog afin qu'ils ne soient conservés dans aucun tampon. Les journaux du noyau sont également récupérés par le démon syslog au fur et à mesure qu'ils sont générés, mais ils continuent également d'être enregistrés (inutilement, sans doute) dans le tampon en anneau.

Les niveaux de journalisation peuvent être vus documentés dans la page de manuel syslog (3) et sont les suivants:

  • LOG_EMERG : le système est inutilisable
  • LOG_ALERT : une action doit être prise immédiatement
  • LOG_CRIT : conditions critiques
  • LOG_ERR : conditions d'erreur
  • LOG_WARNING : conditions d'avertissement
  • LOG_NOTICE : condition normale mais significative
  • LOG_INFO : message d'information
  • LOG_DEBUG : message au niveau du débogage

Chaque niveau est conçu pour être moins "important" que le précédent. Un fichier journal qui enregistre les journaux à un niveau enregistrera également les journaux à tous les niveaux les plus importants.

La différence entre /var/log/kern.log et /var/log/mail.log (par exemple) ne concerne pas le niveau mais l'installation ou la catégorie. Les catégories sont également documentées sur la page de manuel.

44
Celada

Pour répondre au moins à la première partie de votre question sur dmesg:

/var/log/dmesg Stocke le contenu de la "mémoire tampon du noyau", une mémoire tampon créée par le noyau au démarrage dans laquelle stocker les données de journal qu'il génère dès que vous avez dépassé la phase du chargeur de démarrage.

Un tampon en anneau est un type spécial de tampon qui est toujours de taille constante, supprimant les messages les plus anciens lorsque de nouveaux messages arrivent. Le texte stocké dans le tampon en anneau du noyau est ce que vous voyez clignoter devant vous à l'écran lors du premier démarrage d'un Unix semblable à une machine en mode console (pas d'écran de démarrage, Plymouth). Le journal du noyau est stocké dans une mémoire tampon afin que les journaux de démarrage aient un emplacement, jusqu'à ce que le système se soit amorcé au point où le démon syslog puisse prendre le relais.

dmesg sous Linux fait partie de l'ensemble essentiel util-linux d'outils de maintenance système publiés par kernel.org. Selon la page de manuel dmesg(1),

dmesg est utilisé pour examiner ou contrôler le tampon d'anneau du noyau.

Voir: http://www.computerhope.com/unix/dmesg.htm

Sous 'systemd' init, cette commande peut être utilisée pour imprimer la mémoire tampon du noyau:
# journalctl --dmesg or journalctl -k, Merci pour la correction @don_crissti

L'exécution de la commande dmesg | grep -i ethernet, Par exemple, analysera le tampon d'anneau du noyau pour la chaîne 'ethernet'.

J'espère que cela vous aidera au moins dans la première partie de votre demande.

17
nomadrc