Berichte eines Anfängers:
Einstieg in die Systemadministration

Ich habe bei meinem ersten Kontakt mit dem Betriebssystem Linux ein kleines Notizheftchen benutzt und stets nebenher Einzeiler notiert. Z. B. wie ich mit einer Kernel-Patchdatei meine Kernelsourcen update, oder wie ich X hochfahre. Das waren damals mehr oder weniger die einzigsten Sachen die ich im Kopf hatte. Den Kernel neu zu kompilieren und X zu starten.

Dieses Benutzerverhalten ist absolut Normal, weil die meisten Leute die das erste mal mit Linux arbeiten die Neugierde als treibende Kraft haben. Der Neuling denkt nicht an die Möglichkeiten die Linux im Vergleich zu populären Betriebssystemen beinhaltet, wie z. B. Client/Server Computing oder Multiuser/Multitasking Umgebungen.

Das soll nicht heißen daß der Anfänger nur ein Zuschauer vom Betriebssystem ist, sondern er ist zu aller Anfang ein Benutzer. Ab hier folgt, wie bei jedem neuen Betriebssystem ein Lernprozess im Umgang mit Linux.

Diese Serie soll dem Neuling aus der Sicht des Laien Hinweise zur Benützung des Systems geben.

Das Thema heute ist die Suche im System. Hierzu dienen Programme wie locate, which, find, grep und auch Shells wie z. B. bash und Skriptsprachen wie Perl und Awk.

Suche von Programmen und Komplettierung von Dateinamen:

Die bash (Born Again Shell) kann mit der [TAB] Taste den Namen von einem Programm oder von einer Datei vervollständigen.
Angenommen Sie haben eine Textdatei mit dem Dateinamen haushalt_0815.doc.alt und
möchten diese Textdatei mit dem Texteditor joe editieren.

joe hau[TAB]

sollte die Eingabe dieses langen Dateinamens ersparen. Sie können die [TAB] Taste auch nutzen um sich alle ausführbaren Programme und Skripten anzuzeigen die z. B. mit dem Buchstaben "a" anfangen.

a[TAB][TAB]


sollte alle Dateinamen von ausführbaren Programmen und Skripten zeigen, welche mit dem Buchstaben "a" beginnen.

[TAB][TAB]


zeigt auf meinem Rechner folgendes:

There are 459 possiblities. Do you really
wish to see them all? (y or n)


Das wären alle ausführbaren Programme und Skriptdateien im System.

Ein anderer Weg ist das Programm which, welches aufzeigt ob ein Programm im System enthalten ist und wo es sich befindet. Ins deutsche übersetzt ist which? die Frage "welches?".

which sh


sollte /bin/sh ausgeben

Das heisst soviel wie dass sh (die Bourne Shell) sich im Verzeichnis /bin befindet.

Suche von Dateien im System:

der direkte Weg um eine Datei im System zu finden ist:

find / | grep BEGRIFF


find / ist so in etwa wie "dir \ /s" unter MSDOS. So sieht man alle Dateien im System. Aus dem englischen übersetzt heißt es "finden". Mit dem Pipe Symbol "|" kann man unter Linux die Ausgabe von einem Programm zu einem zweiten Programm umleiten. grep heisst auf Deutsch übersetzt "greifen". Mit grep kann man aus der Ausgabe von "find" eine Buchstabenkette herausgreifen

find / | grep which


findet unter anderem /usr/bin/which. Dieser Vorgang dauert ein paar Sekunden oder auch etwas laenger auf besonders langsamen Rechnern. Hierbei werden alle Dateinamen in allen Verzeichnissen durch "find /" angezeigt.

Das Programm find bietet einige Optionen, die man nachlesen kann indem man die find Manpage mit dem Befehl: "man find" aufruft, z. B.:

find / -nogroup
Hier gibt find alle Dateinamen aus, welche eine dem System unbekannte Group-ID besitzen.

Eine flotteres Dateisuchprogramm ist locate

locate which


findet auch unter anderem das Programm which unter /usr/bin/which, aber hierbei sollte die Suche auf einem durchschnittlichen Rechner in einer Sekunde durch sein.

Der Grund ist, dass locate nicht die Festplatte durchsucht, sondern eine einzelne Datei in welcher alle Dateinamen aufgelistet sind. Der Nachteil ist dass diese Datei älter sein kann und somit sind unter umständen neuere Dateien im System noch nicht bekannt. locate sagt im Falle des Falles auch mal:

locate: warning: database '/var/lib/locatedb' is more than 8 days old


Diese Datenbank kann man mit dem Programm "updatedb" auf den aktuellen Stand bringen.

Ein ähnlicher Weg findet statt wenn Sie z. B. auf einer CDROM eine Textdatei mit dem Namen INDEX.TXT haben und Sie möchten in diesem Text etwas suchen, z. B. den Begriff "ray" fü Raytracing.

perl -ne "print if /ray/" INDEX.TXT


Das ist Perl. Perl steckt eigentlich in jeder Linux Distribution irgendwo mit drin, man kennt es als Skriptsprache, es ist aber auch möglich einzeilige Befehle an Perl zu übergeben.

Diese Zeile sagt zu Perl: Suche in der Datei mit dem Namen INDEX.TXT die Zeichenkette "ray" und gib alle gefundenen Zeilen aus.

Ein anderes Beispiel:

perl -ne "print if /ray/i" INDEX.TXT | more


Das kleine "i" hinter dem Suchbegriff "/ray/" bewirkt daß nicht zwischen Groß- und Kleinschreibung unterschieden wird. Der zweite Befehl der mit diesem Perl Einzeiler hier verkettet wird sorgt dafür daß die Ausgabe mit dem Programm more Seitenweise dargestellt wird. Sollte in dieser Inhaltsverzeichnisdatei der Begriff allzu oft vorkommen kann dies ganz nützlich sein.

Für Perl gibt es Bücher wie Sand am Meer. Für AWK nicht. Awk ist eine relativ alte Skriptsprache. Die Buchstaben stehenfür die drei Nachnamen der Programierer von Awk, das "K" steht für Kerningham, dem Miterfinder von der Programmiersprache "C".
awk -f "print {/ray/}" INDEX.TXT


Sucht auch in der Datei INDEX.TXT den Begriff ray.

cat INDEX.TXT | awk -f "print {$5}" | less


Für den Laien ist das vielleicht wie arabisch, aber ein Systemadministrator kann das mit leichtigkeit entziffern. cat zeigt den Inhalt einer Datei auf dem Bildschirm. Awk kann sehr gut Kolonnen ausdrucken, $5 heisst für Awk soviel wie die fünfte Kolonne einer Auflistung. "less" ist aus einem Wortspiel der Clone von "more". less bietet mehr als more, mit more kann man immer nur runterscrollen, mit less kann man runter und raufscrollen. Noch eine kleinigkeit zum Merken: mit der Leertaste kann man bei more und less immer seitenweise runterscrollen, dies gilt für viele Linux Programme wie z. B. Mail- und Newsreader.

...