Keine Fehlermeldungen auf dem Terminal(ttyX)

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Ihr kennt das Problem vielleicht. Ihr wollte nicht im X arbeiten sondern nutzt die Konsolenschnittstelle /dev/tty1-5 (auch zu erreichen per ALT+Strg+F1-F5) und dann werden ständig alle möglichen Kernel-Meldungen auf der Konsole ausgegeben. Und da diese sich an gar keine Regeln halten, kann es ziemlich schwierig werden, überhaupt Dateien zu bearbeiten. Natürlich ist es schön und gut, das er mich über Probleme informiert, aber wenn ich gerade dabei bin dieses Problem zu fixen, will ich auch in Ruhe arbeiten. ;) Aber es gibt Abhilfe:

Version 1: kurz,schnell, temporär für ein Terminal

Diese Befehle einfach als Benutzer in der Konsole seiner Wahl eingeben. Sie gelten nur für diese eine Konsole und sind nur die Sitzung über gültig.

  • komplett keine Nachrichten mehr auf der Konsole ausgeben:
$setterm -msg off
  • nur Nachrichten einer bestimmten Priorität 0-7 durchlassen:
$setterm -msg on -msglevel 1-8
  • Nachrichten wieder anzeigen:
$setterm -msg on


Version 2: temporär, geekig, für alle Terminals

Dieser Befehl geht nur als <root> (PRIO ist dabei eine Zahl 1-8) :

#echo PRIO > /proc/sys/kernel/printk
  • nur EMERG Nachrichten:
#echo 1 > /proc/sys/kernel/printk
  • alle Nachrichten:
#echo 8 > /proc/sys/kernel/printk
  • Es geht auch anders (console_loglevel, default_message_loglevel, minimum_console_loglevel, default_console_loglevel) :
#sysctrl -w kernel.printkkernel.printk ="4 4 1 7"

console_loglevel: das aktuelle Loglevel der Terminals
default_message_loglevel: Nachrichten ohne Priorität werden diesem Level zugeordnet
minimum_console_loglevel: was ist das minimale Loglevel auf das die Konsolen geschaltet werden dürfen
default_console_loglevel: standard loglevel für die Terminals
(der echo Befehl stets einfach den ersten Parameter)

  • und es geht auch mit einem echo ;)
#echo "4 4 1 7" > /proc/sys/kernel/printk

Version 3: dauerhaft für alle Terminals

So nachdem Mensch nun für sich das ideale Loggingverhalten der Terminals getestet hat, will er das ganze dann auch dauerhaft speichern. Dazu einfach eine Datei /etc/sysctrl.d/10-console-messages.conf anlegen/bearbeiten:

# the following stops low-level messages on console
kernel.printk = 4 4 1 7

es sind dieselben Werte wie die vom sysctrl Befehl. Natürlich kann auch /etc/sysctrl.conf bearbeitet werden, aber das ist nicht "the debian way"!

Wenn das bis jetzt noch nicht half: rsyslogd

Die bisherigen Lösungen haben direkt beim Kernel angesetzt und diesem abgewöhnt die Terminals zuzuspammen. Es gibt aber auch noch den rsyslogd, der auch die Terminals zuspammen darf. Dazu die Datei /etc/rsyslog.conf oder /etc/rsyslog.d/* bearbeiten, so dass nichts mehr ausgegeben wird. Der Syntax ist folgender "Quelle Ziel", wenn bei Ziel ein "*" eingetragen ist, werden die Nachrichten auf allen Terminals ausgegeben. Also suchen mittels grep:

$ grep -R "\*\( |\t\)*$" /etc/rsyslog.*
/etc/rsyslog.d/50-default.conf:*.emerg                          *

ok, also muss in der Datei /etc/rsyslog.d/50-default.conf die ausgegebene Zeile mittels # auskommentieren.

Nach dem Auskommentieren muss rsyslogd neugestartet werden:

#/etc/init.s/rsyslogd restart

Kernel print levels

Die Angaben 0-7 sind immer inklusive des Nachrichten Levels. Also 1 bedeutet: Nachrichten des Typs: ALERT und EMERG anzeigen. 7 => alle Nachrichten zeigen.

Die Angaben 1-8 bedeutet immer exklusiv: 1 => Nur Nachrichten des Typs ALERT anzeigen. 8 => alle Nachrichten zeigen.

0 KERN_EMERG Used for emergency messages, usually those that precede a crash.
1 KERN_ALERT A situation requiring immediate action.
2 KERN_CRIT Critical conditions, often related to serious hardware or software failures.
3 KERN_ERR Used to report error conditions; device drivers often use KERN_ERR to report hardware difficulties.
4 KERN_WARNING Warnings about problematic situations that do not, in themselves, create serious problems with the system.
5 KERN_NOTICE Situations that are normal, but still worthy of note. A number of security-related conditions are reported at this level.
6 KERN_INFO Informational messages. Many drivers print information about the hardware they find at startup time at this level.
7 KERN_DEBUG Used for debugging messages.