52 votes

Comment empêcher les messages du noyau d'inonder ma console ?

J'utilise Centos 6, rsyslog logging. La console est inondée de messages du noyau.

  • Klogd ne fonctionne pas (j'utilise rsyslog)
  • La configuration de Rsyslog ne dirige rien vers la console
  • J'ai même essayé d'arrêter complètement rsyslog.

Encore quelque chose est en train d'inonder ma console de messages de log du noyau. Qu'est-ce que c'est et comment l'arrêter ?

Mise à jour : Ce sont les messages générés par le noyau (matériel, iptables, etc.), les choses qui sortent de /proc/kmsg comme ceci :

Shorewall:pub2loc:DROP:IN=br0 OUT= MAC=xxx SRC=xxx DST=xxx LEN=60 TOS=0x00 PREC=0x00 TTL=128 ID=15731 DF PROTO=TCP SPT=63767 DPT=3493 WINDOW=8192 RES=0x00 SYN URGP=0

39voto

David Tonhofer Points 1094

Pour définir les valeurs au moment de l'exécution, utilisez sysctl . (Je suppose que l'on peut écrire à /proc/sys/kernel/printk directement aussi et apparemment vous pouvez aussi utiliser dmesg -n CUR comme décrit aquí )

Affichage :

# sysctl kernel.printk
kernel.printk = 2       4       1       7

Les séparateurs dans la sortie sont des tabulations simples.

Set. Ici, les séparateurs ne sont que des espaces. Cela fonctionne également.

# sysctl -w kernel.printk="2 4 1 7"
kernel.printk = 2 4 1 7
# sysctl kernel.printk
kernel.printk = 2       4       1       7

Véase man sysctl - Configurer les paramètres du noyau au moment de l'exécution" pour plus d'informations.

Rappel de la niveaux de gravité et les quatre valeurs de kernel.printk données par Brian ci-dessus :

  • CUR = niveau de gravité actuel ; seuls les messages plus importants que ce niveau sont imprimés
  • DEF = niveau de gravité par défaut attribué aux messages sans niveau
  • MIN = minimum admissible CUR
  • BTDEF = CUR par défaut au démarrage

Sur mon CentOS : 7 4 1 7

                     CUR  DEF  MIN  BTDEF
0 - emergency        x              x                        
1 - alert            x         x    x
2 - critical         x              x
3 - error            x              x
4 - warning          x    x         x
5 - notice           x              x
6 - informational    V              V
7 - debug            

C'est trop bruyant, je veux juste critique et en haut (pas d'erreurs). Les messages non étiquetés doivent être considérés comme des avertissements, donc DEF est bon :

                     CUR  DEF  MIN  BTDEF
0 - emergency        x              x                        
1 - alert            x         x    x
2 - critical         x              x
3 - error            V              V
4 - warning               x         
5 - notice                           
6 - informational                   
7 - debug            

Régler sur : 3 4 1 3

32voto

Alex Points 962

Je vous suggère de modifier votre /etc/sysctl.conf . Plus précisément, vous souhaitez modifier l'option kernel.printk ligne.

# Uncomment the following to stop low-level messages on console
kernel.printk = 3 4 1 3

Je ne sais pas quels sont les paramètres par défaut de Centos, mais il est probable qu'ils soient plus verbeux que nécessaire.

Voir aussi le mur de soutènement section sur la journalisation. Vous n'êtes pas obligé d'utiliser la cible LOG pour la journalisation, vous pouvez utiliser d'autres outils, ou ajuster la sévérité de la journalisation, et faire des ajustements pour contrôler où vont vos messages.

15voto

DiegoVargasg Points 165

Vous pouvez également supprimer temporairement toute journalisation du noyau vers la console en utilisant :

sudo dmesg -n 1

Voir aussi https://askubuntu.com/questions/97256/how-do-i-disable-messages-or-logging-from-printing-on-the-console-virtual-termin

12voto

Brian W Points 191

J'ai également trouvé ceci utile. Sur les distributions basées sur RHEL, vous pouvez cat /proc/sys/kernel/printk pour voir quels sont vos paramètres actuels.

Quatre valeurs se trouvent dans le fichier printk. Chacune de ces valeurs définit une règle différente pour le traitement des messages d'erreur. La première valeur, appelée niveau de consignation, définit la priorité la plus basse des messages imprimés sur la console. (Notez que plus la priorité est faible, plus le numéro de loglevel est élevé.) La deuxième valeur définit le loglevel par défaut pour les messages qui ne sont pas explicitement associés à un loglevel. La troisième valeur définit la configuration du niveau de journalisation le plus bas possible pour le niveau de journalisation de la console. La dernière valeur définit la valeur par défaut du niveau de journalisation de la console.

L'utilisation du paramètre LOGLEVEL dans /etc/sysconfig/init pour définir le niveau de journalisation de la console n'est plus supportée. Pour définir le niveau de consignation de la console dans Red Hat Enterprise Linux 6, passez loglevel=' comme paramètre de démarrage. Par exemple, loglevel=6 affichera tous les messages inférieurs à 6 (pas égal à juste inférieur à).

Crédit à :

6voto

haimg Points 21323

Voici la manière "officielle" de procéder, selon RedHat :

Pour définir le niveau de journalisation de la console dans Red Hat Enterprise Linux 6, passez loglevel=<number> en tant que paramètre de démarrage.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X