Quels sont les concepts de «tampon circulaire du noyau», «niveau utilisateur», «niveau journal»?

35

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

/ var / log / dmesg Contient des informations sur le tampon circulaire du noyau.

/var/log/kern.log Ne contient que les messages du noyau de tous les niveaux de log

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

Sont-ils tous sur les journaux? Comment sont-ils liés et différents?

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

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

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

Tim
la source

Réponses:

41

Oui, tout cela a à voir avec la journalisation. Non, rien de tout cela n'a à voir avec runlevel ou "protection ring".

Le noyau conserve ses journaux dans un tampon circulaire. 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. Autrement, aucun journal ne serait enregistré avant le démarrage du démon syslog. Le contenu de cette mémoire tampon circulaire peut être visualisé à tout moment à l'aide de la dmesgcommande. Son contenu est également sauvegardé au /var/log/dmesgmoment du démarrage du démon syslog.

Tous les journaux qui ne proviennent pas du noyau sont envoyés lorsqu'ils sont générés au démon syslog, ils ne sont donc 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 (sans nécessité, sans doute) dans le tampon en anneau.

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

  • LOG_EMERG : le système est inutilisable
  • LOG_ALERT : il faut agir 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 de niveau 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 enregistre également les journaux à tous les niveaux les plus importants.

La différence entre /var/log/kern.loget /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.

Celada
la source
Merci. (1) Le "niveau utilisateur" est-il lié à "l'espace utilisateur"? (2) D'après ce que vous avez dit, /var/log/kern.loget /var/log/dmesgdevrait avoir le même contenu que les messages du noyau? Mais leur contenu n'est pas le même.
Tim
"niveau utilisateur" n'est pas une chose, autant que je sache. Il y a le niveau syslog, qui est le niveau "d'importance" d'un message syslog (j'ai énuméré les niveaux), et cela n'a rien à voir avec l'espace utilisateur par rapport à l'espace du noyau. /var/log/kern.logdoit contenir le dmesgcontenu (éventuellement formaté différemment) à partir du démarrage. À moins que le démarrage ne soit long et que le contenu ne soit plus en rotation.
Celada
Ma deuxième question est la suivante: pendant l’ dmesgimpression des valeurs actuelles du tampon circulaire du noyau, les valeurs passées / anciennes du tampon sont stockées dans /var/log/dmesg. La dmesgsortie n'est donc qu'un sous-ensemble récent de /var/log/dmesgcontenu, et ils sont différents. Alors le contenu de /var/log/dmesg(pas dmesgcomme dans votre commentaire) et /var/log/kernel.logle même?
Tim
Dépend quand! Peu de temps après le démarrage, le /var/log/dmesgcontenu sera probablement vers la fin de /var/log/kern.log. Bien plus tard, il ne sera plus là, il aura été remplacé. En général, /var/log/kern.logcontient les journaux plus anciens que tout instantané donné de la mémoire tampon de sonnerie du journal du noyau, ainsi que les journaux plus récents que l'instantané.
Celada
17

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

/var/log/dmesg stocke le contenu du 'kernel ring buffer', un tampon de mémoire créé par le noyau au démarrage dans lequel stocker les données de journal générées dès que la phase du chargeur de démarrage est passée.

Une mémoire tampon circulaire est un type spécial de mémoire tampon de taille constante, qui supprime les messages les plus anciens lorsque de nouveaux messages arrivent. Le texte stocké dans la mémoire tampon circulaire du noyau correspond à ce que vous voyez clignotant devant votre écran lorsque vous démarrez un système Unix pour la première fois. - comme une machine en mode console (pas d’écran de démarrage, Plymouth). Le journal du noyau est stocké dans une mémoire tampon de sorte que les journaux d’amorçage se trouvent quelque part, jusqu’à ce que le système s’amorce jusqu’à ce que le syslogdémon puisse prendre le relais.

dmesgsous Linux fait partie du util-linuxpaquet essentiel des outils de maintenance du système publiés par kernel.org. Selon la dmesg(1)page de manuel,

dmesg est utilisé pour examiner ou contrôler le tampon circulaire du noyau.

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

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

Émettre la commande, dmesg | grep -i ethernet par exemple, analysera la mémoire tampon du noyau pour la chaîne 'ethernet'.

J'espère que cela aide au moins avec la première partie de votre demande.

nomadrc
la source