J'utilise Centos 6, la journalisation rsyslog. La console est inondée de messages du noyau.
Still Quelque chose inonde ma console de messages de journalisation du noyau. Qu'est-ce que c'est et comment puis-je l'arrêter?
Update : Ce sont les messages générés par le noyau (matériel, iptables, etc.), des éléments sortants 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 TDP = 3493 WINDOW = 8192 RES = 0x00 SYN URGP = 0
Je vous suggère de modifier votre /etc/sysctl.conf
. Spécifiquement, vous voulez modifier la ligne kernel.printk .
# 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 du centos, mais il semble probable que les choses soient plus compliquées que nécessaire.
Voir aussi la section shorewall sur la journalisation. Vous n'êtes pas obligé d'utiliser la cible LOG pour la journalisation, vous pouvez utiliser d'autres outils, ajuster la gravité du journal et ajuster les éléments pour contrôler votre destination.
Pour définir les valeurs à l'exécution, utilisez sysctl
. (Je suppose qu'on peut écrire aussi directement dans /proc/sys/kernel/printk
et apparemment, vous pouvez aussi utiliser dmesg -n CUR
comme décrit ici )
Afficher:
# sysctl kernel.printk
kernel.printk = 2 4 1 7
Les séparateurs dans la sortie sont des onglets simples, btw.
Ensemble. Ici les séparateurs ne sont que des espaces. Fonctionne aussi bien.
# sysctl -w kernel.printk="2 4 1 7"
kernel.printk = 2 4 1 7
# sysctl kernel.printk
kernel.printk = 2 4 1 7
Voir man sysctl
- "configurer les paramètres du noyau au moment de l'exécution" pour plus d'informations.
Rappel des niveaux de sévérité } et des quatre valeurs de kernel.printk données par Brian ci-dessus:
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 place (pas d'erreurs). Les messages sans étiquette 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
J'ai trouvé cela utile aussi. Sur les distributions basées sur RHEL, vous pouvez cat /proc/sys/kernel/printk
voir quels sont vos paramètres actuels.
Le fichier printk contient quatre valeurs. Chacune de ces valeurs définit une règle différente pour traiter les messages d'erreur. La première valeur, appelée niveau de consignation de la console, définit la priorité la plus basse des messages imprimés sur la console. (Notez que plus la priorité est basse, plus le numéro de niveau de journal est élevé.) La deuxième valeur définit le niveau de journalisation par défaut pour les messages auxquels aucun niveau de journalisation n'est associé. La troisième valeur définit la configuration de niveau de journalisation la plus basse possible pour le niveau de journalisation de la console. La dernière valeur définit la valeur par défaut pour le niveau de log 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 prise en charge. Pour définir le niveau de journalisation de la console dans Red Hat Enterprise Linux 6, transmettez loglevel = 'en tant que paramètre de temps de démarrage. Par exemple, loglevel = 6 imprimera tous les messages inférieurs à 6 (pas tout à fait inférieurs à).
Crédit à:
Voici la façon "officielle" de le faire, selon RedHat :
Pour définir le niveau de journalisation de la console dans Red Hat Enterprise Linux 6, transmettez loglevel = <numéro> en tant que paramètre de temps de démarrage.
Vous pouvez également supprimer temporairement toute la journalisation du noyau sur la console en utilisant:
Sudo dmesg -n 1
Ce que vous voyez sont des messages de journal du noyau imprimés sur la console. Les messages de journal qui parviennent à la console dépendent du niveau de journal de la console actuellement défini.
Lorsque la cmdline du noyau inclut le paramètre de noyau quiet
, le niveau de journal de la console obtenu est 4
(c.-à-d. Erreurs et pire). Sans cela, il est réglé sur 7
(c'est-à-dire info et pire).
Vous pouvez afficher les paramètres de noyau actifs avec cat /proc/cmdline
et votre niveau de journal de console actuel avec sysctl kernel.printk
. Il peut être modifié dynamiquement avec dmesg -n X
(ou même avec sysctl -w
).
Pour rendre la modification permanente, vous pouvez ajouter des paramètres de noyau à cmdline (par exemple, quiet
et/ou loglevel=X
) ou ajouter un fichier sysctl .conf
sous /etc/sysctl.d
.
Le paramètre du noyau peut être ajouté comme ceci:
# vi /etc/default/grub # edit the GRUB_CMDLINE_LINUX value
# for i in /boot/grub2/grub.cfg /boot/efi/EFI/*/grub.cfg; do
[ -f "$i" ] && grub2-mkconfig -o "$i" ; done