claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 05/2006   »   Ausgabe bestellen

Log-Dateien mit tail, grep & Co. durchforsten

Schriftführer des Systems

Heike Jurzik


Versagt die Hard- oder Software, verweigert das grafische System den Dienst oder streikt die Internet-Verbindung, ist guter Rat oft teuer. Da das Linux-System wichtige Dinge im Hintergrund protokolliert, hilft ein Blick in die Logfiles oft weiter -- wir stellen Kommandozeilen-Tools vor, die beim Durchforsten dieser Dateien nützlich sind.

Meldungen des Kernels, das An- und Abmelden von Benutzern, Netzwerkvorgänge und vieles mehr protokolliert das Linux-System akribisch in den so genannten Log-Dateien. Der Protokollführer heißt syslogd (unter Suse Linux syslog-ng = "Syslog New Generation"); es handelt sich um einen Daemon, der schon beim Booten des Rechners seinen Dienst aufnimmt. Sämtliche Log-Dateien liegen im Ordner /var/log/ und dessen Unterverzeichnissen (Abbildung 1).

Abb. 1: Sämtliche Log-Dateien finden Sie unterhalb von "/var/log/".


Daemon: Dienstprogramm, das im Hintergrund läuft, dort auf Signale wartet und erst dann die Arbeit aufnimmt, wenn ein bestimmtes Ereignis eintritt. Die meisten Daemons werden von Root gestartet, es gibt aber auch Dienstprogramme, die danach unter einer anderen Benutzerkennung weiterlaufen. Linux startet viele Daemon-Prozesse schon beim Booten. Daemon ist traditionell die Abkürzung von "Disk and Excecution Monitor", darum heißt es auch im Deutschen nicht "Dämon".

Abgesehen von wenigen Ausnahmen sind die meisten dieser Protokolldateien vor neugierigen Augen geschützt und lediglich für den Systemverwalter lesbar. Um die Dateien zu betrachten, verwenden Sie beispielsweise KDEs Datei-Manager Konqueror im Systemverwaltungsmodus. Starten Sie diesen über Eingabe von kdesu konqueror in ein mit [Alt-F2] geöffnetes Schnellstartfenster und geben Sie auf Aufforderung das Root-Passwort an. Da die Logfiles reine Textdateien sind, können Sie den Inhalt z. B. mit einem Text-Editor betrachten. Dieses Vorgehen ist jedoch relativ mühsam, und es kann einige Zeit dauern, bis Sie auf diese Weise gesuchte Informationen finden. Die folgenden Abschnitte zeigen daher alternative Wege auf der Kommandozeile und geben Tipps zur Fehlersuche.

Gut sortiert

Eine der wichtigsten Log-Dateien, sozusagen die erste Anlaufstelle, falls es irgendwo hakt, ist die Datei /var/log/messages. Hier landen bei den meisten Distributionen Meldungen zur Netzwerkverbindung, zum Starten und Beenden von Diensten, Informationen zu Hardware-Treibern, zur Benutzer-Authentifizierung und vieles mehr.


Authentifizierung: Beim Anmelden an einem Linux-System gibt man Benutzername und Passwort ein. Diese Daten überprüft das System und stellt damit sicher, dass wirklich der Benutzer am Rechner sitzt, der er zu sein behauptet. Erst nach dieser Prüfung, die Authentifizierung (Prüfung, ob etwas authentisch, echt ist) heißt, gewährt Linux Zugriff auf die privaten Daten.

Informationen zum Drucksystem hingegen landen bei den meisten Distributionen im Ordner /var/log/cups/: In den dort liegenden Logfiles finden Sie eventuelle Fehlermeldungen, Zugriffe auf konfigurierte Geräte und vieles mehr.

Alle von EasyLinux unterstützten Distributionen setzen auf X.org als X-Server. Sollte der Bildschirm schwarz bleiben, die Maus nicht richtig funktionieren oder die 3D-Beschleunigung der Grafikkarte nicht laufen, ist ein Blick in /var/log/Xorg.0.log fällig. Wer in Foren oder Mailinglisten nach Hilfestellung sucht, kommt schneller ans Ziel, wenn die entsprechenden Abschnitte der Log-Dateien bekannt sind.

Zutritt gestattet?

Versucht jemand, Administratorrechte zu erlangen -- sei es über Eingabe von su in ein Terminal-Fenster oder beim Start eines distributionseigenen Einrichtungswerkzeugs --, landen Informationen über diesen Vorgang in /var/log/messages (auf einigen Systemen in /var/log/auth). Neben Datum und Uhrzeit erfahren Sie hier, welcher Benutzer das Kommando initiiert hat und ob er erfolgreich war. Während Suse Linux nur Auskunft über Erfolg oder Misserfolg gibt, verrät Mandriva Linux darüber hinaus, welches Programm Root-Rechte verlangt. Das Listing "Root-Rechte verweigert" zeigt entsprechende Meldungen auf einem Suse- und Mandriva-Linux-System.

Root-Rechte verweigert
# Erfolgloser Versuch des Benutzers suse93, Root-Rechte auf einem
#Suse-Linux-System zu erlangen:
Mar 27 14:30:51 transpluto su: FAILED SU (to root) suse93 on /dev/pts/6

#Start des Mandriva-Kontrollzentrums mit anschließender Falscheingabe
#des Root-Kennworts:
Mar 27 18:11:41 localhost drakconf.real[4395]: ### Program is starting ###
Mar 27 18:11:47 localhost su(pam_unix)[4404]: authentication failure; logname= uid=500 euid=0 tty= ruser=mandriva2006 rhost=  user=root

Verbunden oder nicht?

Ebenso leicht sind Aktivitäten eines DHCP-Clients zu erkennen, wenn Ihr Rechner seine IP-Adresse von einem DHCP-Server bezieht. Dass der eigene Rechner einen Server nach einer IP-Adresse fragt und diese anschließend erhält, sowie die Angaben, wie lange diese gültig ist, verraten Zeilen wie die folgenden:

Mar 27 19:18:45 localhost dhclient: DHCPREQUEST on eth0 to 255.255.255.255 port 67
Mar 27 19:18:45 localhost dhclient: DHCPACK from 192.168.2.15
Mar 27 19:18:46 localhost dhclient: bound to 192.168.2.237 -- renewal in 235 seconds.


DHCP: Das Dynamic Host Configuration Protocol ermöglicht eine automatische Einrichtung mehrerer Computer eines Netzwerks und versieht diese beispielsweise automatisch mit einer IP-Adresse und einer Routing-Tabelle.

Bauen Sie vom Rechner direkt eine Internet-Verbindung per Modem, ISDN oder DSL auf, sehen Sie in /var/log/messages, ob alles geklappt hat, da die Einwahlprogramme pppd (Modem und DSL) bzw. ipppd (ISDN) hier Ihre Statusmeldungen verewigen, z. B.:

Mar 25 22:14:19 asteroid pppd[1432]: local IP address 195.14.222.177

Geschnitten oder am Stück

Gerade bei aktuellen Anlässen lohnt sich ein Blick auf die letzten Zeilen einer Log-Datei. Wer nicht das gesamte File in einem Text-Editor öffnen und bis ganz ans Ende blättern möchte, nimmt auf der Kommandozeile das Programm tail zur Hilfe. Öffnen Sie ein Terminal-Fenster (z. B. indem Sie konsole in ein mit [Alt-F2] geöffnetes Schnellstartfenster eintippen) und werden Sie darin mit dem Befehl

su -

und Eingabe des Administratorkennworts zum Systemverwalter. Rufen Sie nun tail zusammen mit der entsprechenden Log-Datei auf, zeigt das Programm die letzten zehn Zeilen (Abbildung 2) an. Sollen es etwas mehr sein, übergeben Sie dem Tool zusammen mit der Option -n eine andere Nummer, z. B.:

tail -n 20 /var/log/messages

Abb. 2: "/var/log/messages" zeigt auch das Hinzufügen und Entfernen von Wechselmedien (hier eines USB-Sticks) an.

Erhalten Sie hingegen Fehlermeldungen wie

Mar 27 15:43:21 transpluto kernel: usb.c: USB device 10 (vend/prod0x82d/0x200) is not claimed by any active driver.
Mar 27 15:43:25 transpluto /etc/hotplug/usb.agent: ... no modules for USB product 82d/200/100

können Sie davon ausgehen, dass das entsprechende Gerät nicht erkannt und unterstützt wird.

Das Programm tail bringt ein praktisches Feature mit: Mit der Option -f schalten Sie in einen "Endlosmodus"; tail aktualisiert dann die Anzeige von Dateien, die sich verändern. Wollen Sie /var/log/messages immer im Blick haben und auf dem aktuellsten Stand sein, geben Sie

tail -f /var/log/messages

ein und beobachten eine fortlaufende Anzeige. Um die Anzeige zu beenden, drücken Sie [Strg-C].

"tail" und "grep" -- ein starkes Team

In Zusammenarbeit mit einem weiteren Kommandozeilen-Tool durchforsten Sie die tail-Ausgabe gezielt nach Schlüsselwörtern und finden entsprechende Meldungen noch viel schneller: Das Programm grep [1] durchsucht Zeichenketten nach Mustern. Wer in den letzten 100 Zeilen des Logfiles /var/log/messages nach "USB" respektive "usb" sucht, erledigt das mit einem einzigen Kommando:

tail -n 100 /var/log/messages | grep -i usb

Die Ausgabe von tail leiten Sie durch das Pipe-Zeichen "|" (das Sie über [AltGr-<] eingeben) an den Befehl grep weiter; dessen Parameter -i sorgt dafür, dass er Groß- und Kleinschreibung nicht unterscheidet, im Beispiel also neben "usb" auch "USB", "usB" usw. findet. (hge)

Infos
[1] grep-Artikel: Elisabeth Bauer, "Textfischer -- Textdateien durchsuchen mit grep", EasyLinux 10/2003, S. 74 ff., http://www.easylinux.de/2003/10/074-grep/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2017 COMPUTEC MEDIA GmbH | Last modified: 2007-04-05 11:24

Nutzungsbasierte Onlinewerbung

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]