For Beginners: Arbeiten mit Linux

Mit diesem Artikel möchte ich euch einen kurzen Überblick über die Tools und Programme geben, mit denen man inter Linux arbeitet, sich auf der Shell bewegt und das ein oder andere analysieren kann.

Linuxkommandos

ls           # Mit "ls" kann man sich den Inhalt eines Verzeichnisses anzeigen lassen.
             # Wichtige Parameter für dieses Kommando:

             # -l       listet den Inhalt untereinander auf
             # -a         zeigt versteckte Dateien an
             # -tr         sortiert die Files nach Schreibzugriffen
                        Aktuellste Datei steht ganz unten

             # Diese Parameter lassen sich auch zusammen angeben.

cd           # Zum Wechseln des aktuellen Verzeichnisses

du           # Zeigt die "Disk Usage" eines Verzeichnisses an.

df -h        # Zeigt die Festplattenbelegung an.
df -ih       # Zeigt die belegten Inodes an.

ps -auxw     # Zeigt alle laufenden Prozesse an.
             # Um nach Prozessen zu suchen kann an den Befehl ein | grep "Suchbegriff" 
             # angefügt werden.

top          # Top ist der Prozessmonitor (Ähnlich dem Taskmanager)
             # Dieser kann durch drücken von "q" verlassen werden.

lsof         # listet alle offenen Dateihandles
             # Wird am besten eingegrenzt durch ein      | grep "Suchbegriff"

grep         # Durchsucht Dateien 
             # grep "PATTERN" "FILE"

find         # Sucht nach einer Datei oder einem Verzeichnis
             # find "ORT"    -name 'DATEINAME' -ls

netstat      # Zeigt, wie in Windows, alle TCP/UDP Verbindungen an
             # Sinnvolle Parameter -tulpen

less         # Öffnet eine Datei zum Lesen

netcat       # äquivalenz zu Telnet
             # netcat -vz "HOSTADRESSE" "PORT"

             # Gibt ein "open/connection refused/connection timed out" zurück

free         # zeigt die Auslastung des Arbeitspeichers und Swapbereiches an. 
             # (SWAP ist die Auslagerungsdatei von Linux)            

Analyse

Im folgenden Teil werden ein paar Möglichkeiten der Analyse auf einem Linuxsystem beschrieben.

Eventlogs

Unter Linux gibt es kein Tool wie den Event Viewer unter Windows. Die Informationen/Meldungen werden, je nach Distribution, in unterschiedlichen Logfiles abgelegt. In der Regel befinden sich diese Logs im Verzeichnis /var/log/. Der Zweck eines Logfiles wird meist durch den Namen deutlich. Die interessanteste Logfile ist in der Regel die /var/log/messages. In dieser stehen die wichtigsten System- und Kernel-Meldungen, sowie Nachrichten von vereinzelten Daemons (Diensten), sofern diese Meldungen nicht in separates Logfiles ausgelagert sind. Die Systemmeldungen können allerdings durchaus auch in syslog oder im kern.log landen. Das kann von Distribution zu Distribution unterschiedlich sein.

Prozesse

Die Analyse der Prozesse unter Linux wird über Befehle wie ps oder pstree durchgeführt. Hier werden sämtliche laufenden Dienste angezeigt. Je nach angegebenen Parameter wird die Ausgabe detaillierter. Über ps auxw | grep oracle werden Nur Prozesse ausgegeben, welche den Suchbegriff oracle enthalten. Hier kann in erster Linie geprüft werden, ob ein Dienst läuft. Oft wird über die übergebenen Parameter am Dienst deutlich, welche Konfigurationsdateien oder Verzeichnisse genutzt werden. Dies ist nützlich, da viele Applikationen/Dienste/Prozesse die Logdateien auch in ihrem Konfigurationspfad ablegen können. Über lsof lässt sich anzeigen, welcher Benutzer/Prozess welche Dateien im Zugriff hat.

Arbeitsspeicher

Wie unter Windows gibt es natürlich unter Linux ebenfalls eine Auslagerungsdatei (swap). Über top oder free lässt sich überprüfen, ob ein System auf den SWAP-Bereich zugreifen muss. Um Ressourcenfresser zu finden greift man auf top oder ps zurück. Hier wird die Arbeitspeichernutzung eines Prozesses sichtbar, weiterhin kann man Informationen zur CPU Nutzung, IOWait und weiteres ablesen.

Festplattenbelegung

Per df listet man die Festplattennutzung auf. Der Befehl df -h zeigt die Belegung jedes einzelnen Mountpoints (eingehangenes Dateisystem) an und der Parameter -h gibt dies human-readable aus. Per du lässt sich die Speichernutzung eines Verzeichnisses oder Mounts anzeigen. Sinnvolle Parameter sind hier:

-h               # human-readable, rechnet die Ausgabe in M/G/T um
--max-depth=1    # zeigt in der Ausgabe nur das aktuelle Verzeichnis an

Inodes

Unter UNIX-basierten Betriebssystemen gilt:

Everything is a file // Alles ist eine Datei

Deshalb verwenden UNIX-Betriebssysteme die sogenannten Inodes, welche innerhalb der Dateisysteme in Listen geführt werden. Diese Inodes geben Auskunft über die Datei und sorgen für die Zuordnung von Datei und Datenblock auf der Festplatte. Eine ähnliche Methode gibt es auch unter Windows. In der Regel hat man mit Inodes wenig zu tun, allerdings können die Tabellen, in denen die Inodes und deren Infos abgelegt werden voll laufen und dann steht das System genauso, wie bei Festplatten die keinen Speicherplatz mehr haben. Ein Symptom wäre, das Schreibzugriffe den Hinweis geben, dass Sie keinen Platz mehr auf der Partition haben, aber ein df -h noch freien Speicherplatz anzeigt. Man kann die Inode-Belegung über df -ih anzeigen lassen. Da jede Datei eine eigene Inode bekommt, hat man oft Schwierigkeiten mit diesen, wenn viele kleine oder 0-byte Dateien erzeugt werden (Ein Dienst spielt verrückt oder ähnliches). Hier hilft nur löschen dieser überflüssigen Dateien.

Kommunikation (Ports)

Per netstat -tulpen können sämtliche offene Ports / Verbindungen angezeigt werden. Hier wird eine Liste aller Ports angezeigt, auf die ein System lauscht. Die Parameter stehen für:

-t  # TCP Verbindungen
-u  # UDP Verbindungen
-l  # „lauschende“ Verbindungen anzeigen
-p  # Die ProzessID mit anzeigen lassen
-e  # Zusätzliche/erweiterte Informationen anzeigen
-n  # Nummerische Anzeige von Adressen, Ports und Usern (Keine Namen)

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax