Basis-Systemdiagnose
Systemprotokolle
Hier erhältst Du als Debian-Neuling Hilfe dabei, grundlegende Systemstatusinformationen und Protokolle auszulesen, die bei einer Beurteilung eines Problems helfen können.
dmesg
dmesg zeigt Fehlermeldungen des Linuxkernels an. Es ist besonders hilfreich bei Fehlern im Zusammenhang mit Hardwareproblemen. Siehe auch dmesg.
Protokolldateien
Bis zu Debian 7 - Wheezy liegen die Systemprotokolle ausschließlich gemäß Vorgabe des FHS im Dateisystem unter /var/log. Es gibt in der Standardeinstellung unter anderem folgende Dateien dort:
Datei | Inhalt |
---|---|
messages | Eine Sammeldatei für den Großteil der unkritischen Meldungen |
daemon.log | Alle Meldungen von Systemdiensten |
kern.log | Kernelmeldungen |
mail.log | Meldungen zum Mailsystem |
auth.log | Meldungen zu Anmeldeaktivitäten aller Dienste |
In der Standardeinstellung werden manche Meldungen in mehrere dieser Dateien geschrieben. Es gibt darüber hinaus noch weitere Protokolldateien. Zusätzliche Systemdienste schreiben Ihre Meldungen entweder in diese Dateien oder verwenden eigene Dateien oder Unterverzeichnisse unterhalb von /var/log.
Mit dem folgenden Kommando kann man sehen, in welche Datei zuletzt geschrieben wurde - die Datei mit der neuesten Änderung steht unten - um so ggf. herauszufinden, in welcher Datei man aktuelle Meldungen findet:
root@debian:~# ls -ltra /var/log
Ausgabe:
-rw-r----- 1 root adm 392782 Dez 13 03:29 kern.log.3.gz -rw-r----- 1 root adm 392782 Dez 13 03:29 kern.log.2.gz -rw-r----- 1 root adm 392782 Dez 13 03:29 kern.log.1 -rw-r----- 1 root adm 30466 Dez 14 00:04 mail.log.1 -rw-r----- 1 root adm 376156 Dez 14 06:30 auth.log.1 -rw-r----- 1 root adm 319353 Dez 14 06:33 messages.1 -rw-r----- 1 root adm 1599186 Dez 19 06:29 syslog.1 -rw-r----- 1 root adm 231159 Dez 19 20:30 mail.log -rw-r----- 1 root adm 126047 Dez 19 20:30 messages -rw-r----- 1 root adm 137708 Dez 19 20:30 kern.log -rw-r----- 1 root adm 1755794 Dez 20 00:00 syslog -rw-r----- 1 root adm 262817 Dez 20 00:01 auth.log
Die Dateien mit einer Ziffer am Ende sind rotierte Protokolldateien. Das sind ältere Systemmeldungen, wie man auch am Änderungsdatum sieht. Die Dateien mit einem .gz am Ende(Oder vielleicht auch einem .bz2 oder .xz) sind zusätzlich noch komprimiert, so dass diese weniger Platz verbrauchen.
Die jeweils letzten Meldungen einer Datei kann man sich mit tail anzeigen lassen:
root@debian:~# tail /var/log/syslog
Man kann auch die Ausgabe der Meldungen fortlaufend verfolgen:
root@debian:~# tail -f /var/log/syslog
journalctl
Mit systemd - also beginnend ab Debian 8 / Jessie - hat sich einiges geändert. Jetzt ist das Kommando journalctl für die Protokollausgabe zuständig. Die Journaldaten werden per Voreinstellung derzeit nicht dauerhaft geschrieben, sondern nur, falls das Verzeichnis /var/log/journal/ exisitert. Wenn man die Protokolle also über Systemstarts hinweg haben möchte, dann muss man dieses aktivieren, indem man dieses Verzeichnis anlegt.
Mit journalctl kann man sich also Protokolle ausgeben lassen, z. B. die letzten 30 Zeilen aller Protokollaktiväten:
root@debian:~# journalctl -n 30
Man kann das Protokoll auch verfolgen, um zu sehen, was für neue Meldungen jeweils auftreten.
root@debian:~# journalctl -f
Jetzt kann man in einem separaten Fenster Dienste starten und beenden, um zu sehen, was für Meldungen erscheinen.
Es ist auch möglich die Protokollausgabe nur für einen Dienst anzeigen zu lassen. Angenommen wir haben einen Apache-Webserver installiert. Zunächst müssen wir herausfinden wie der Dienst im System benannt ist. Dazu nutzen wir das systemctl Kommando:
root@debian:~# systemctl list-units | grep apache
Ausgabe:
apache2.service loaded active running LSB: Apache2 web server
Die Ausgabe zeigt, dass der Dienst apache2.service heisst. Alle Dienste enden auf .service.
Jetzt können wir uns das Protokoll vom Indianer anzeigen lassen:
root@debian:~# journalctl -u apache2.service -n 30
Prozessor
CPU-Auslastung
Die CPU-Auslastung zeigt an, wie stark der Prozessor bzw. die Prozessorkerne derzeit ausgelastet sind. Die CPU-Auslastung kann mit dem Programm top angezeigt werden. Mit der Taste 1 kann die Anzeige der einzelnen CPU-Kerne ein- und ausgeschaltet werden. Etwas schöner ist die Darstellung mit dem Zusatzprogramm htop. Bei Mehrkernsystemen kann die Anzeige für 100% Auslastung je nach System entweder einen einzigen Kern meinen oder alle CPU-Kerne zusammen bedeuten.
Systemlast
Die durschnittliche Systemlast oder CPU-Load-Average ist der Wert, der anzeigt, wieviele Prozesse derzeit vom Prozessor ausgeführt werden oder auf Daten externer Speicher(Festplatte, SSD, Netzwerk, insgesamt auch I/O genannt) warten. Die Load-Average wird ebenso mit dem Programm top angezeigt als Durchschnitt für die letzten 5,10 und 15 Minuten. Bei einem kaum belasteten System liegt sie annähernd bei 0. Hohe Loadwerte können auf Engpässe oder Überlast bei Speichersystemen bzw. Netzwerk hindeuten. Siehe auch: Wikipedia:Load
Load-Anzeige der 5-/10- und 15-Minuten-Last bei top:
load average: 0.35, 0.73, 1.12
Auch ein hoher Wert wait - in top wie folgt zu sehen - deutet auf eine Überlast in der I/O hin:
Cpu(s): 2.0%us, 1.3%sy, 0.0%ni, 16.6%id, 80.1%wa, 0.0%hi, 0.0%si, 0.0%st
Festplatten
Anzeige der aktiven Festplatten
Eine Übersicht der aktiven Festplatten und Partitionen zeigt
root@debian:~# lsblk
Ausgabe:
sr0 11:0 1 1024M 0 rom sda 8:0 0 74,5G 0 disk ├─sda1 8:1 0 25,2G 0 part / ├─sda2 8:2 0 4,7G 0 part [SWAP] └─sda3 8:3 0 44,7G 0 part /home
Gesundheitszustand
Den Gesundheitszustand einer Festplatte kann man am besten mit den smartmontools über die SMART-Werte mit dem smartctl-Kommando feststellen. Detailinformationen siehe Festplattendiagnostik-_und_Überwachung
Festplattenaktivität
Die Festplattenaktivität kann über das Zusatzprogramm iotop in Echtzeit angezeigt werden.
Konfiguration
Den eingestellten Geschwindigkeitsmodus der Festplatte sieht man mit
root@debian:~# hdparm -i /dev/sda
Ausgabe:
/dev/sda: Model=HTS541080G9AT00, FwRev=MB4OA60A, SerialNo=MPB4LAX6HRNRLM ... PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
Der Stern markiert den eingestellten Wert(Hier: udma5).
Festplattenbelegung
Die Festplattenbelegung kann man sich mit df anzeigen lassen.
user@debian:~$ df -h
Ausgabe:
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf /dev/sda1 25G 7,8G 16G 34% / none 4,0K 0 4,0K 0% /sys/fs/cgroup udev 241M 4,0K 241M 1% /dev tmpfs 50M 1,1M 49M 3% /run none 5,0M 0 5,0M 0% /run/lock none 248M 0 248M 0% /run/shm none 100M 0 100M 0% /run/user /dev/sda3 45G 42G 584M 99% /home
Hier sieht man, dass die /home-Partition fast voll ist. Weitere nützliche Programme, um die Speicherplatzbelegung genauer zu untersuchen gibt es auf der Seite: Festplattenbelegung.
Wichtig ist auch, dass genügend freie Inodes vorhanden sind. Ein Inode ist ein Verwaltungseintrag für eine einzelne Datei. Bei Systemen mit extrem vielen sehr kleinen Dateien kann es evtl. vorkommen, dass trotz genügend freier Kapazität Fehlermeldungen wegen vollem Speicher auftreten. Das Kommando zum anzeigen freier Inodes ist:
user@debian:~$ df -i
Ausgabe:
Dateisystem Inodes IBenutzt IFrei IUse% Eingehängt auf /dev/sda1 1648320 449757 1198563 28% / none 63361 1 63360 1% /sys/fs/cgroup udev 61494 519 60975 1% /dev tmpfs 63361 501 62860 1% /run none 63361 5 63356 1% /run/lock none 63361 1 63360 1% /run/shm none 63361 1 63360 1% /run/user /dev/sda3 2932736 85906 2846830 3% /home
Hier sind ausreichend freie Inodes zur Verfügung.
Dateisysteme
Dateisysteme hängen meist stark mit der Festplatte zusammen, können aber auch von entfernten Systemen über das Netzwerk eingehängt werden. Ein wichtiger Punkt der speziell Dateisysteme betrifft, ist ob diese zum Schreiben eingehängt(auch ge-mount-ed genannt) sind. Das sollte der Normalfall sein. Wenn jedoch Hardwarefehler von den Geräten gemeldet werden, dann kann es es sein, dass die Standardeinstellung des Systems eine sofortige Änderung des Dateisystems in den Nur-Lese-Modus zur Folge hat. Wenn also ein Dateisystem wie z. B. /home, oder / im Nur-Lese-Modus ist, dann deutet das möglicherweise auf Gerätefehler hin.
Das prüfen wir wie folgt:
user@debian:~$ mount
Ausgabe(gekürzt):
/dev/xvda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=254560,mode=755) systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
Hier ist zu sehen das ein Dateisystem(Nämlich / zum schreiben eingehängt ist(zu sehen an dem Wert rw in Klammern) und weiterhin bei dem Dateisystem die Umschaltung auf Nur-Lesen im Fehlerfall ebenso aktiv ist, was der Wert errors=remount-ro anzeigt. Die Dateisysteme für sysfs, proc, udev und systemd-1 sind nur Pseudodateisysteme, die nur eine Schnittstelle zu Information und Konfiguration des Linux-Systems darstellen, aber keinen Speicher zum ablegen von Daten bezeichnen.
Arbeitsspeicher
Auslastung
Der Arbeitsspeicher ist eine zentrale Komponente in einem Computersystem. Auch hier ist top wieder ein nützlicher Helfer. Hier der relevante Abschnitt aus der top-Ausgabe zum Arbeitsspeicher:
Mem: 506892k total, 496864k used, 10028k free, 2316k buffers Swap: 4882428k total, 204684k used, 4677744k free, 85616k cached
Der Wert zu Mem/used enthält sowohl den belegten Arbeitsspeicher(Hier 496864k), als auch zusätzliche Belegungen für verwendete Caches(Hier 85616k), die bei Bedarf für weitere Arbeitsspeicheranforderungen gelöscht werden. Der tatsächlich freie Arbeitsspeicher beträgt hier also 95644k ( 10028k + 85616k ).
Das Programm free gibt ebenso eine Kurzübersicht zum Arbeitsspeicher aus.
Swap
Wird der Arbeitsspeicher voll, werden gerade nicht gebrauchte Bereiche auf die Festplatte ausgelagert. Das nennt man Swapping oder Paging. Swapspeicher ist für Situation mit besonders hohem Arbeitsspeicherverbrauch eine gute Notlösung. Als Dauerlösung ist Swap nicht geeignet. Das wird klar, wenn man bedenkt, dass die Zugriffszeit einer Festplatte ca. 100.000 Mal langsamer ist, als die des Arbeitsspeichers.
Die Menge des verwendeten Swap-Speichers wird auch wieder in top angezeigt, wie im obigen Ausschnitt zu sehen, oder alternativ mit dem Kommando:
user@debian:~$ /sbin/swapon -s
Speichertest
Ist das System instabil, kann das ein Hinweis auf ein einen oder mehrere fehlerhafte RAM-Riegel hindeuten. Um den Arbeitsspeicher zu testen, gibt es das Programm memtest86+. Nach der Installation muss dazu das System neu gestartet werden und beim Bootmenu Memtest86+ ausgewählt werden. Damit wird der Speichertest geladen. Ein Textmenü wird aufgerufen, mit dem man den Speichertest durchführen kann. Der Speichertest dauert sehr lange - je nach Grösse des verbauten Arbeitsspeichers mehrere Stunden.
Systemzeit
Auch wenn man die Systemzeit für eher unwichtig halten mag - dem ist nicht so. Wenn die Systemzeit total falsch eingestellt ist, können diverse Probleme auftreten:
- Das Internetsurfen funktioniert nur teilweise, da alle SSL-Zertifikate von Webseiten nicht gültig sind
- Die Installation von Software kann fehlschlagen. Auch hier sind zeitgebundene kryptografische Schlüssel im Spiel
- Wenn die Systemprotokolle mit falscher Zeit geschrieben werden, wird die Fehlersuche sehr erschwert.
Es ist also gut, wenn man die Systemzeit gleich richtig setzt. Es ist zwar genauer, wenn man sich gleich die Zeit von Zeitservern aus dem Internet holt, doch für den Anfang geht es auch manuell. Nehmen wir mal an, die aktuelle Zeit wäre jetzt:
Sonntag, 20. Dezember 2015, 19:30 Uhr
Dann müssen wir das zuerst in eine gültige Zeit umwandeln, die das date-Kommando akzeptiert. Das wäre dann:
2015-12-20 19:30:00 CET
Hierbei steht CET für die Zeitzone. CET ist die Central European Time. Das Linux-System speichert die Zeit in UTC(koordinierte Weltzeit) ab und braucht deswegen eine gültige Zeitzone, für die die zu setzende Zeit gilt. Damit können wir die Zeit jetzt setzen:
root@debian:~# date -s '2015-12-20 19:30:00 CET'
Anschliessend können wir noch die Hardware-Uhr im System selbst setzen. Das sollte das System beim herunterfahren selbst tun, aber wir können das jetzt auch mal manuell vorab erledigen.
root@debian:~# hwclock --systohc
Wenn Ihr neben Linux noch Windows auf dem Rechner habt, dann gibt es normalerweise ein Kuddelmuddel, was die Zeit angeht, da Windows die Zeit nicht in UTC speichert. Hier ist ein Tip, wie Ihr das in den Griff bekommt: Zeit in Windows in UTC speichern
Netzwerk
Informationen dazu finden sich auf der Seite Basis-Netzwerkdiagnose.