21.07.2012 Aufrufe

5 Die Befehle der Kommandozeile

5 Die Befehle der Kommandozeile

5 Die Befehle der Kommandozeile

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

5 <strong>Die</strong><br />

<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 169<br />

<strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong><br />

<strong>Die</strong> Arbeit auf <strong>der</strong> <strong>Kommandozeile</strong> bietet sicherlich den größten Reiz<br />

beim Umgang mit einem HighEnd-Server – sie birgt aber auch die größten<br />

Gefahren. Auch wenn die <strong>Kommandozeile</strong> eines Linux-Rechners <strong>der</strong><br />

DOS-Shell einer Windows-Maschine recht ähnlich ist: Es gibt viele kleine<br />

Unterschiede, die es anfangs zu beachten gibt, viele kleine Fallen, in die<br />

man tappen kann. <strong>Die</strong>ses Kapitel beschreibt den grundlegenden Aufbau<br />

eines Linux-Servers und erklärt Ihnen die wichtigsten <strong>Befehle</strong>, die Sie auf<br />

<strong>der</strong> <strong>Kommandozeile</strong> benötigen.<br />

5.1 Grundlagen zum Dateisystem<br />

Sobald <strong>der</strong> Cursor das erste Mal auf <strong>der</strong> <strong>Kommandozeile</strong> des Linux-Servers<br />

blinkt, schleicht sich bei den meisten Anwen<strong>der</strong>n ein leicht ungutes<br />

Gefühl ein. Zwar sieht alles ähnlich aus, doch man merkt schnell, dass<br />

eben doch vieles an<strong>der</strong>s ist. Beson<strong>der</strong>s das Zurechtfinden in <strong>der</strong> vor allem<br />

für Einsteiger zunächst unübersichtlichen Verzeichnisstruktur eines<br />

Linux-Rechners bereitet den meisten Anwen<strong>der</strong>n Probleme.<br />

<strong>Die</strong> Verzeichnisstruktur<br />

An<strong>der</strong>s als Windows mit seinen Laufwerkbuchstaben und Verzeichnissen<br />

sind unter Linux die Dateien ausschließlich in Verzeichnissen organisiert.<br />

Genau wie unter Windows gibt es hierbei solche, die im Wesentlichen<br />

dem System vorbehalten sind, sowie solche, die dem Anwen<strong>der</strong> zur mehr<br />

o<strong>der</strong> weniger freien Nutzung zur Verfügung stehen. Um Ihnen die Übersicht<br />

zu erleichtern, finden Sie in <strong>der</strong> folgenden Tabelle eine Liste <strong>der</strong><br />

wichtigsten Verzeichnisse eines Linux-Rechners und ihrer Bedeutung.


170 Kapitel 5<br />

Verzeichnis Bedeutung User<br />

/ Wurzelverzeichnis <strong>der</strong> Dateisystemstruktur Alle<br />

/bin beinhaltet die in <strong>der</strong> Grundinstallation enthaltenen<br />

Programme, die für die meisten User ausführbar sind<br />

Alle<br />

/boot enthält die beim Systemstart geladene Grundversion<br />

des Betriebssystems<br />

/dev Systemverzeichnis, das einen Zugang zu den im Rechner<br />

enthaltenen physikalischen Geräten wie Netzwerkkarte<br />

o<strong>der</strong> Festplatten über Datei-Operationen<br />

bietet<br />

/etc Hier liegen die Konfigurationseinstellungen <strong>der</strong> meisten<br />

<strong>der</strong> auf dem Linux-Rechner vorinstallierten Softwarepakete.<br />

/home Unterhalb dieses Verzeichnisses liegen die Stammverzeichnisse<br />

<strong>der</strong> auf dem Rechner angelegten Benutzerkonten.<br />

Hier finden sich auch die Daten <strong>der</strong> per<br />

ServerAdmin 24 angelegten Domains.<br />

/lib Speicherort für die zur Funktion des Betriebssystems<br />

wichtigen Systembibliotheken<br />

/opt Hier finden sich optionale Pakete, die während <strong>der</strong><br />

Grundinstallation des Systems eingerichtet wurden.<br />

/root Stammverzeichnis des Superusers SU<br />

/sbin ausführbare Programme, die dem Superuser vorbehalten<br />

sein sollten,<br />

SU<br />

<strong>Die</strong> Bezeichner in <strong>der</strong> letzten Spalte geben an, durch wen – wenn überhaupt<br />

– ein Zugriff auf die in den jeweiligen Verzeichnissen gespeicherten<br />

Daten genommen werden sollte. Das Kürzel SU kennzeichnet dabei den<br />

SU<br />

System<br />

/tmp globales Verzeichnis für temporäre Dateien Alle<br />

/usr globales Verzeichnis für Daten, die durch die Anwen<strong>der</strong><br />

erstellt wurden o<strong>der</strong> von diesen ausführbar sind<br />

(siehe eigene Tabelle)<br />

Alle<br />

/var globales Verzeichnis für sich än<strong>der</strong>nde Daten (siehe<br />

eigene Tabelle)<br />

SU<br />

Alle<br />

SU<br />

Alle<br />

Alle


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 171<br />

Superuser root, <strong>der</strong> Begriff Alle meint alle User und <strong>der</strong> Eintrag System<br />

besagt, dass hier eigentlich nur das System selbst Aktionen ausführen sollte.<br />

Zwei Verzeichnisse aus <strong>der</strong> obigen Tabelle besitzen einen Son<strong>der</strong>status:<br />

Im Verzeichnis /usr findet sich eine weiter verzweigte Struktur, die einer<br />

näheren Erläuterung bedarf. Ähnliches gilt für das Verzeichnis /var, in<br />

dem sich einige interessante Bereiche finden.<br />

<strong>Die</strong> Verzeichnisse unterhalb von /usr<br />

Wie <strong>der</strong> Name schon andeutet – usr ist nichts an<strong>der</strong>es als eine Abkürzung<br />

von User – finden sich in diesem Verzeichnis Dateien, die für die Anwen<strong>der</strong><br />

des Linux-Servers nützlich sind. <strong>Die</strong>se sind auf mehrere Verzeichnisse<br />

verteilt, die sowohl direkt unter /usr wie auch unter /usr/local vorhanden<br />

sind. Der Unterschied besteht darin, dass die direkt unterhalb von /usr<br />

abgelegten Dateien während <strong>der</strong> Grundinstallation des Systems eingerichtet<br />

wurden, wohingegen die Verzeichnisse unterhalb von /usr/local die<br />

Dateien aufnehmen, die <strong>der</strong> Anwen<strong>der</strong> zu einem späteren Zeitpunkt<br />

selbst einrichtet.<br />

Verzeichnis Bedeutung User<br />

/usr/bin von allen Benutzern ausführbare Dateien Alle<br />

/usr/lib Bibliotheken, die für die Ausführung zusätzlich<br />

installierter Pakete notwendig sind<br />

Alle<br />

/usr/sbin ausführbare Dateien für den Superuser SU<br />

/usr/share Gemeinsame Dateien installierter Pakete Alle<br />

/usr/local/bin ausführbare Dateien von Programmpaketen, die<br />

vom Anwen<strong>der</strong> manuell auf dem Server eingerichtet<br />

wurden<br />

Alle<br />

/usr/local/lib Bibliotheken von Programmpaketen, die vom<br />

Anwen<strong>der</strong> manuell auf dem Server eingerichtet<br />

wurden<br />

Alle


172 Kapitel 5<br />

Verzeichnis Bedeutung User<br />

/usr/local/sbin für den Superuser bestimmte ausführbare<br />

Dateien, die zu Programmpaketen gehören, die<br />

<strong>der</strong> Anwen<strong>der</strong> manuell auf dem Server eingerichtet<br />

hat<br />

/usr/local/share gemeinsame Dateien <strong>der</strong> vom Anwen<strong>der</strong> manuell<br />

auf dem Server eingerichteten Programmpakete<br />

<strong>Die</strong> Verzeichnisse unterhalb von /var<br />

Auch beim Verzeichnis /var ist <strong>der</strong> Name Programm: In <strong>der</strong> unter ihm<br />

angelegten Struktur finden sich vor allem variable Daten – also Dateien,<br />

die sich während des Betriebs Ihres HighEnd-Servers kontinuierlich<br />

än<strong>der</strong>n. Dazu zählen Protokolldateien ebenso wie die Inhalte von Datenbanken<br />

o<strong>der</strong> auch die Mailbox-Daten <strong>der</strong> einzelnen User. Einige <strong>der</strong><br />

wichtigsten – aber bei weitem nicht alle – Verzeichnisse finden Sie in <strong>der</strong><br />

nachfolgenden Tabelle beschrieben:<br />

Verzeichnis Enthält<br />

/var/lib variable Dateien diverser auf dem Server laufen<strong>der</strong> Applikationen<br />

/var/lib/mysql Hier finden sich die von MySQL verwalteten Datenbanken in<br />

jeweils eigenen Unterverzeichnissen.<br />

/var/lib/named beinhaltet die Informationen eines auf dem Server laufenden<br />

DNS-Servers<br />

/var/log globales Verzeichnis für allgemeine Protokolldateien<br />

/var/log/apache2 Hier finden Sie die Protokolldateien des Standard-Web-<br />

Servers, <strong>der</strong> auf Ihrem HighEnd-Server läuft.<br />

/var/log/qmail Enthält den aktuellen Status des als Mail-Server eingesetzten<br />

Programms QMail<br />

SU<br />

Alle


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 173<br />

Mount-Points: Ersatz für Laufwerke<br />

Wenn in Ihrem lokalen Rechner mehrere Festplatten eingebaut sind o<strong>der</strong><br />

Sie Ihre Festplatte in mehrere Partitionen unterteilt haben, dann wissen<br />

Sie, dass Windows sowohl zusätzliche Festplatten wie auch unterschiedliche<br />

Partitionen über jeweils eigene Laufwerkbuchstaben anspricht. Da<br />

Linux keine <strong>der</strong>artigen Bezeichner kennt, muss es ein an<strong>der</strong>es Verfahren<br />

verwenden, um mehrere Festplatten o<strong>der</strong> Partitionen in das Dateisystem<br />

einzubinden.<br />

<strong>Die</strong> Lösung hat ebenfalls wie<strong>der</strong> mit den Verzeichnissen zu tun: Jedes<br />

Verzeichnis unter Linux kann nicht nur Daten aufnehmen. Zusätzlich ist<br />

es auch in <strong>der</strong> Lage, als so genannter Mount-Point – was übersetzt so viel<br />

wie Einhängepunkt bedeutet – zu fungieren.<br />

Damit ist auch schon klar, wie Linux zusätzliche Festplatten und Partitionen<br />

verwaltet: Sie werden einfach an beliebigen Punkten in das Dateisystem<br />

eingehängt. Das bedeutet, dass ein einfacher Verzeichniswechsel unter<br />

Linux dazu führen kann, dass Sie plötzlich auf einer ganz an<strong>der</strong>en Festplatte<br />

und eventuell sogar mit einem ganz an<strong>der</strong>en Dateisystem arbeiten.<br />

Für den Moment müssen Sie sich damit allerdings nicht weiter beschäftigen.<br />

Im Augenblick genügt es zu wissen, dass Verzeichnisse unter Linux<br />

deutlich mehr leisten als ihre Gegenstücke unter Windows.<br />

Eingehängte Verzeichnisse erkennen<br />

Um ein echtes von einem eingehängten Verzeichnis zu unterscheiden, gibt es einen<br />

einfachen Trick: Jedes eingehängte Verzeichnis besitzt in seinem Wurzelverzeichnis<br />

ein Verzeichnis mit dem Namen lost+found. Sobald Sie dieses Verzeichnis entdecken,<br />

wissen Sie, dass Sie sich auf einem eigenen Datenträger befinden, <strong>der</strong> an <strong>der</strong><br />

aktuellen Verzeichnisposition in das Dateisystem Ihres Servers eingehängt wurde.<br />

5.2 Rund um Dateien und Verzeichnisse<br />

Mit dem Grundwissen über den Aufbau des Dateisystems von Linux<br />

gewappnet können Sie nun daran gehen, die Tiefen Ihres HighEnd-Servers<br />

auf <strong>der</strong> <strong>Kommandozeile</strong> zu erforschen. <strong>Die</strong> wichtigsten <strong>Befehle</strong> zur


174 Kapitel 5<br />

ersten Orientierung beschäftigen sich vorwiegend mit dem Anzeigen von<br />

Verzeichnisinhalten, dem Wechsel von Verzeichnissen sowie dem Anlegen<br />

und Löschen von Dateien und Verzeichnissen.<br />

ls: Verzeichnisinhalte anzeigen<br />

Syntax<br />

Generelle Form: ls [Optionen] [Filter]<br />

Wichtige Optionen: -l gibt eine ausführliche Liste des Verzeichnisinhalts aus<br />

-a zeigt auch versteckte Verzeichnisse an<br />

Eine <strong>der</strong> wichtigsten Informationen, die man über ein Verzeichnis auf<br />

dem Linux-Server erhalten möchte, ist in <strong>der</strong> Regel dessen Inhalt. Was<br />

unter Windows <strong>der</strong> Befehl dir leistet, erledigt unter Linux das Kommando<br />

ls, das vielfältige Parameter bietet. Seine einfachste Aufrufvariante ist<br />

ohne jeglichen Parameter, was eine vereinfachte, mehrspaltige Inhaltsliste<br />

des aktuellen Verzeichnisses ausgibt.<br />

Bild 5.1 Ohne Parameter aufgerufen liefert <strong>der</strong> Befehl ls eine mehrspaltige Liste <strong>der</strong><br />

im aktuellen Verzeichnis vorhandenen Dateinamen.<br />

Nun ist diese Information oft nicht aussagekräftig genug. Um auch Informationen<br />

wie Größe <strong>der</strong> Dateien, ihren Besitzer und die jeweiligen<br />

Zugriffsrechte zu erhalten, benötigen Sie die Langform <strong>der</strong> Liste, die über<br />

den Parameter -l abgerufen wird:


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 175<br />

Bild 5.2 Zugriffsrechte und Besitzer <strong>der</strong> Dateien/Verzeichnisse verrät <strong>der</strong> Befehl ls -l<br />

Um den Inhalt eines an<strong>der</strong>en Verzeichnisses zu erfahren ohne zunächst in<br />

dieses zu wechseln, können Sie auch dessen Namen als Parameter an den<br />

Befehl ls übergeben.<br />

Bild 5.3 Ein Verzeichnisname als Parameter von ls bewirkt die Ausgabe des Inhalts<br />

dieses Verzeichnisses.<br />

Selbstverständlich lassen sich diese Optionen auch kombinieren, um beispielsweise<br />

eine detaillierte Inhaltsliste eines an<strong>der</strong>en als des aktuellen<br />

Verzeichnisses zu erhalten.


176 Kapitel 5<br />

Bild 5.4 Auch die Kombination von Parametern und gewünschtem Verzeichnis ist<br />

kein Problem für den Befehl ls.<br />

Im letzten Beispiel können Sie gleich eine weitere Beson<strong>der</strong>heit von<br />

Linux-Verzeichnissen sehen: Das Verzeichnis mail im Verzeichnis /var ist<br />

gar kein echtes Verzeichnis. Wie <strong>der</strong> Pfeil mit dem Verweis auf spool/mail<br />

hinter dem Eintrag andeutet, handelt es sich hier um einen so genannten<br />

Link. Bei Links handelt es sich um eine komfortable Möglichkeit, Dateien<br />

o<strong>der</strong> ganze Verzeichnisbäume auch an an<strong>der</strong>en Stellen im Dateisystem<br />

von Linux zur Verfügung zu stellen.<br />

Eine weitere Option von ls ist die Ausgabe aller, also auch <strong>der</strong> versteckten<br />

Dateien eines Verzeichnisses. <strong>Die</strong>se Funktion rufen Sie über den Parameter<br />

-a ab. Sie ist vor allem nützlich, wenn Sie nicht als Superuser root,<br />

son<strong>der</strong>n als normaler Anwen<strong>der</strong> am Server angemeldet sind. Während die<br />

Voreinstellung für den Superuser so gestaltet ist, dass dieser auch versteckte<br />

Dateien stets angezeigt bekommt, muss dies bei <strong>der</strong> Arbeit als einfacher<br />

Systembenutzer explizit angefor<strong>der</strong>t werden. Um eine lange<br />

Inhaltsliste inklusive <strong>der</strong> versteckten Dateien zu erhalten, übergeben Sie<br />

dem Befehl ls einfach die beiden Optionen -a und -l.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 177<br />

Bild 5.5 <strong>Die</strong> Optionen des Befehls ls lassen sich auch zusammenfassen.<br />

Sie können Optionen auch zusammenfassen, beispielsweise sind die beiden<br />

folgenden Kommandos funktional identisch:<br />

h0123:~# ls –a –l<br />

h0123:~# ls –al<br />

Komfort-Funktionen von SuSE Linux<br />

Um dem Anwen<strong>der</strong> Tipparbeit zu sparen und Windows-Anwen<strong>der</strong>n den Umstieg zu<br />

erleichtern, sind unter SuSE Linux 9.3 einige Befehls-Aliase definiert, die den<br />

Umgang mit ls deutlich erleichtern. So bewirkt <strong>der</strong> von Windows bekannte und<br />

unter Linux eigentlich nicht vorhandene Befehl dir die Ausgabe einer detaillierten<br />

Verzeichnisinhaltsliste – er entspricht also dem Befehl ls -l. Auch das Kürzel ll liefert<br />

diese Ausgabe, während la dem Kommado ls -al entspricht.<br />

Sie sollten sich allerdings lieber an die korrekte Linux-Schreibweise halten. Nicht<br />

jede Linux-Distribution bietet diese komfortablen Alias-Definitionen – hat man sich<br />

aber einmal an sie gewöhnt, ist es nur schwer, wie<strong>der</strong> ohne sie auszukommen.


178 Kapitel 5<br />

cd: Verzeichniswechsel<br />

Syntax<br />

Generelle Form: cd [Verzeichnis]<br />

Spezielle Verzeichnisnamen:<br />

cd - wechselt in das vor dem aktuellen zuletzt besuchte<br />

Verzeichnis<br />

cd ~ wechselt in das Heimatverzeichnis des Anwen<strong>der</strong>s<br />

Um zwischen verschiedenen Verzeichnissen zu wechseln, verwenden Sie<br />

unter Linux denselben Befehl wie unter Windows: cd – die Kurzform von<br />

Change Directory. Seine prinzipielle Arbeitsweise unterscheidet sich nicht<br />

von <strong>der</strong> seines Windows-Gegenstücks. Sie geben einfach das gewünschte<br />

Zielverzeichnis als Parameter an und landen im gewünschten Verzeichnis<br />

– sofern dieses existiert.<br />

Bild 5.6 <strong>Die</strong> Grundfunktion des Befehls zum Verzeichniswechsel entspricht <strong>der</strong><br />

Arbeitsweise des bekannten Kommandos unter Windows.<br />

Ist das Zielverzeichnis nicht vorhanden, so gibt cd eine entsprechende<br />

Fehlermeldung aus und führt den Verzeichniswechsel nicht durch. Es<br />

gibt aber ein paar Beson<strong>der</strong>heiten <strong>der</strong> Linux-Variante dieses Kommandos,<br />

die unter Windows nicht vorhanden sind. So führt <strong>der</strong> Aufruf von cd<br />

ohne jeden Parameter zu einem Sprung in das Heimatverzeichnis des<br />

Anwen<strong>der</strong>s.<br />

Bild 5.7 Wie die Tilde (~) signalisiert, führte <strong>der</strong> Befehl cd ohne Parameter aufgerufen<br />

zu einem Sprung in das Heimatverzeichnis des Anwen<strong>der</strong>s.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 179<br />

Eine weitere Beson<strong>der</strong>heit bietet <strong>der</strong> Verzeichniswechsel, wenn Sie als<br />

Parameter das Minuszeichen verwenden. <strong>Die</strong>s führt zu einem Sprung in<br />

das vor dem aktuellen Verzeichnis zuletzt besuchte Verzeichnis. Das ist<br />

beson<strong>der</strong>s dann nützlich, wenn Sie beispielsweise häufig zwischen <strong>der</strong><br />

Konfiguration eines Programms in /etc und dessen Logfile in einem<br />

Unterverzeichnis von /var/log/ hin und her wechseln müssen.<br />

Bild 5.8 Ein Minuszeichen als Parameter des Befehls cd bewirkt einen Sprung zum<br />

vor dem aktuellen zuletzt besuchten Verzeichnis.<br />

Auto-Vervollständigen nutzen<br />

Eine Komfortfunktion des <strong>Kommandozeile</strong>n-Interpreters von Linux ist, dass dieser<br />

eine automatische Vervollständigung eines Befehls mithilfe <strong>der</strong> [ÿ]-Taste ermöglicht.<br />

<strong>Die</strong>s funktioniert bei allen <strong>Befehle</strong>n, die sich auf Dateien und Verzeichnisse<br />

beziehen. Um beispielsweise schnell in das Verzeichnis /var/log/apache2 zu<br />

gelangen, genügt die folgende Eingabe:<br />

(c)(d)(/)(v)[ÿ](log)(/)(a)[ÿ]<br />

Dass Sie den Namen des Unterverzeichnisses log komplett angeben müssen, liegt<br />

daran, dass im Verzeichnis var auch die Unterverzeichnisse lib und lock angelegt<br />

sind. <strong>Die</strong> Angabe von [L]+[ÿ] o<strong>der</strong> [L]+[O]+[ÿ] ist also nicht eindeutig genug,<br />

um log als gewünschtes Zielverzeichnis zu erkennen.<br />

Experimentieren Sie ruhig ein wenig mit <strong>der</strong> automatischen Vervollständigungsfunktion<br />

– Sie werden schnell merken, wie angenehm es sich damit arbeiten lässt.


180 Kapitel 5<br />

mkdir: Verzeichnisse anlegen<br />

Syntax<br />

Generelle Form: mkdir [Optionen] [Verzeichnisname]<br />

Spezielle Optionen: -p legt alle auf dem Pfad zum gewünschten Verzeichnis<br />

liegenden Verzeichnisse automatisch<br />

an, wenn diese noch nicht existieren<br />

-m erlaubt das Festlegen <strong>der</strong> Zugriffsrechte direkt<br />

beim Anlegen des Verzeichnisses<br />

Verzeichnisse helfen dabei, Ordnung im Dateisystem zu wahren und auch<br />

bei umfangreichen Datenmengen den Überblick zu behalten. Zum Anlegen<br />

eigener Verzeichnisse dient unter Linux <strong>der</strong> Befehl mkdir. Seine einfachste<br />

Form besteht aus dem Befehl gefolgt von einem Verzeichnisnamen<br />

wie zum Beispiel test. Das so angegebene Verzeichnis wird direkt im aktuellen<br />

Verzeichnis erstellt.<br />

Bild 5.9 Fast wie unter Windows: Verzeichnisse erstellen mit mkdir.<br />

Der Befehl mkdir kann aber noch mehr. Er ermöglicht es Ihnen, mehrstufige<br />

Verzeichnisebenen in einem Rutsch zu erstellen. Das funktioniert<br />

auch dann, wenn dazu mehrere <strong>der</strong> Zwischenebenen neu angelegt werden<br />

müssen. Der Schlüssel zum Erfolg ist <strong>der</strong> Parameter -p, den Sie beim Aufruf<br />

mit übergeben. <strong>Die</strong>ser bewirkt, dass alle im Verzeichnispfad zum<br />

gewünschten Verzeichnis benötigten Unterverzeichnisse automatisch<br />

angelegt werden, falls sie noch nicht existieren.<br />

Bild 5.10 Auch mehrstufige Verzeichnisse legt mkdir in einem Zug an.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 181<br />

Zusätzlich haben Sie die Möglichkeit, beim Anlegen eines Verzeichnisses<br />

gleich die Zugriffsrechte festzulegen, die es erhalten soll. Dazu ist mkdir<br />

<strong>der</strong> Parameter -m zu übergeben, gefolgt von <strong>der</strong> gewünschten Rechtekombination<br />

in Zahlennotation (siehe Kapitel 4.1.4):<br />

Bild 5.11 Mit dem Parameter -m legen Sie fest, welche Zugriffsrechte auf das<br />

erzeugte Verzeichnis bestehen sollen.<br />

touch: Dateien anlegen / Dateidatum än<strong>der</strong>n<br />

Syntax<br />

Grundlegende Form: touch [Optionen] dateiname<br />

Spezielle Optionen: -t [string] setzt das Datum auf den im String<br />

angegebenen Wert<br />

-a än<strong>der</strong>t nur das Datum des letzten<br />

Zugriffs<br />

-m än<strong>der</strong>t nur das Datum <strong>der</strong> letzten<br />

Än<strong>der</strong>ung<br />

Gerade bei Verzeichnissen, die zu einem Web-Auftritt gehören, ist es<br />

sinnvoll, in diesen eine leere Datei mit dem Namen index.html anzulegen.<br />

Bei einem Aufruf des Verzeichnisses wird dann eine weiße Seite ausgegeben,<br />

anstatt wie in den Grundeinstellungen von Apache verankert, eine<br />

Liste <strong>der</strong> Dateien im aktuellen Verzeichnis. Zwar lässt sich eine Datei<br />

auch mithilfe des Editors erzeugen, schneller geht es aber über den Befehl


182 Kapitel 5<br />

touch. Aufgerufen mit lediglich einem Dateinamen als Parameter legt er<br />

die angegebene Datei an, sofern diese noch nicht vorhanden ist. Existiert<br />

die Datei bereits, setzt touch lediglich das per ls angezeigte Datum sowie<br />

die Uhrzeit auf <strong>der</strong>en zum Zeitpunkt des Aufrufs von touch gültige Werte.<br />

Eine Son<strong>der</strong>form von touch ist <strong>der</strong> Aufruf mit <strong>der</strong> zusätzlichen Option -t,<br />

gefolgt von einer Zahlenfolge, die das gewünschte Datum sowie die Uhrzeit<br />

angibt. So führt <strong>der</strong> Aufruf von touch -t 01311212 index.html dazu, dass<br />

für die Datei index.html in <strong>der</strong> per ls angezeigten Übersicht des Verzeichnisses<br />

das Erstellungsdatum als <strong>der</strong> 31. Januar, als Zeitpunkt <strong>der</strong> Erstellung<br />

12:12 Uhr angezeigt wird.<br />

Bild 5.12 Der Befehl touch legt nicht nur Dateien an, er ist auch in <strong>der</strong> Lage, Erstellungsdatum<br />

und Uhrzeit zu än<strong>der</strong>n.<br />

Über zwei zusätzliche Optionen haben Sie noch bessere Kontrolle darüber,<br />

welche Zeitstempel einer Datei touch modifiziert. Durch Übergabe<br />

von -a weisen Sie den Befehl an, nur den Zeitstempel für den letzten<br />

Zugriff zu än<strong>der</strong>n, mittels -m beeinflussen Sie den Zeitstempel <strong>der</strong> letzten<br />

Modifikation einer Datei.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 183<br />

rmdir: Verzeichnisse entfernen<br />

Syntax<br />

Grundlegende Form: rmdir [Optionen] Verzeichnisname<br />

Spezielle Optionen: -p löscht auch alle im Pfad liegenden Elternverzeichnisse<br />

Zu einem ordentlich verwalteten Server gehört auch, nicht mehr benötigte<br />

Verzeichnisse wie<strong>der</strong> zu entfernen. Unter Linux ist für diese Aufgabe <strong>der</strong><br />

Befehl rmdir zuständig. Seine einfachste Anwendung besteht darin, ihm<br />

das zu löschende Verzeichnis als einzigen Parameter zu übergeben. Dabei<br />

kann es sich auch um einen Verzeichnispfad, wie beispielsweise /var/test/<br />

kannweg handeln. In diesem Fall wird nur das letzte <strong>der</strong> angegebenen Verzeichnisse,<br />

also kannweg, gelöscht.<br />

Bild 5.13 Der Befehl rmdir dient dem Löschen einzelner Verzeichnisse.<br />

Allerdings löscht rmdir Verzeichnisse nur, wenn diese leer sind. Sind in<br />

einem Verzeichnis aber Dateien o<strong>der</strong> weitere Verzeichnisse vorhanden, so<br />

verweigert rmdir die Arbeit.<br />

Bild 5.14 Verzeichnisse, in denen noch Dateien liegen, lassen sich mit rmdir nicht<br />

löschen.


184 Kapitel 5<br />

Handelt es sich bei den zu löschenden Daten ausschließlich um Verzeichnisse<br />

– soll also ein ansonsten leerer Verzeichnisbaum entfernt werden –,<br />

dann hilft die Option -p weiter. Sie sorgt dafür, dass nicht nur das letzte<br />

im Pfadparameter übergebene Verzeichnis, son<strong>der</strong>n auch dessen Elternverzeichnisse<br />

gelöscht werden.<br />

Bild 5.15 Auf Wunsch löscht rmdir auch ganze Verzeichnisbäume.<br />

Lösch-Ergebnis überprüfen<br />

Auch mit dem Parameter -p aufgerufen löscht rmdir nur leere Verzeichnisse.<br />

Haben Sie beispielsweise die Verzeichnisäste /test/eins/kannweg sowie /test/<br />

zwei/kannweg und löschen nun mit rmdir -p /test/eins/kannweg, dann bleibt das<br />

Verzeichnis /test bestehen, da es ja auch noch das Verzeichnis zwei enthält, also<br />

nicht leer ist.<br />

rm: Dateien und Verzeichnisse entfernen<br />

Syntax<br />

Grundform: rm [Optionen] Dateifilter<br />

Spezielle Optionen: -r bewirkt rekursives Löschen in den Unterverzeichnissen<br />

des angegebenen Ziels<br />

-f löscht alle Daten ohne jegliche Nachfrage beim<br />

Nutzer<br />

Um Dateien zu löschen, verwendet Linux einen eigenen Befehl: rm. Auch<br />

seine Grundform ist recht einfach, als Parameter wird dem Kommando<br />

lediglich <strong>der</strong> Name <strong>der</strong> zu löschenden Datei übergeben. Dabei müssen


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 185<br />

Sie sich nicht in dem Verzeichnis befinden, in dem die zu löschende Datei<br />

abgelegt ist. Sie können den kompletten Pfad zur Datei angeben.<br />

Zwei beson<strong>der</strong>e Parameter machen den Befehl rm gefährlich. Das gilt<br />

beson<strong>der</strong>s, wenn Sie als Superuser root angemeldet sind. Zum einen<br />

erlaubt die Option -r das rekursive Löschen aller Daten innerhalb von<br />

Verzeichnissen. Zum an<strong>der</strong>en lässt sich über die Option -f jedwede Nachfrage<br />

beim Anwen<strong>der</strong> ausschalten. In Kombination eine gefährliche<br />

Mischung, da ein Aufruf mit -rf als Optionspaar das angegebene Ziel<br />

sofort und unwie<strong>der</strong>bringlich löscht.<br />

Bild 5.16 <strong>Die</strong> verschiedenen Anwendungsmöglichkeiten des Löschbefehls rm.<br />

Wildcards: <strong>Die</strong> Jokerzeichen des Dateisystems<br />

<strong>Die</strong> meisten mit Dateien arbeitenden Kommandos unter Linux unterstützen<br />

die Angabe von Wildcards im Namen <strong>der</strong> Zieldaten. Dabei handelt<br />

es sich um die Platzhalterzeichen '*' und '?'. Der Stern ist ein<br />

Platzhalter für beliebig viele Zeichen. Der Aufruf von rm test* würde also<br />

sowohl die Dateien test1, test_2 und test99 wie auch die Dateien<br />

test_fuer_den_ loeschbefehl und sogar test löschen. Wie das letzte Beispiel<br />

zeigt, kann ein Stern also auch für »kein Zeichen« als Platzhalter dienen.


186 Kapitel 5<br />

Das Fragezeichen wie<strong>der</strong>um stellt einen Platzhalter für genau ein Zeichen<br />

dar. Der Befehl rm test? würde daher lediglich die Datei test1 löschen, alle<br />

an<strong>der</strong>en aber nicht. Selbst die Datei test bliebe bestehen.<br />

5.3 Dateien anzeigen, kopieren, verschieben<br />

und umbenennen<br />

Gerade unter Linux kommt <strong>der</strong> Arbeit mit Dateien beson<strong>der</strong>e Bedeutung<br />

zu. <strong>Die</strong> meisten Anwendungen verwenden Textdateien, um ihre Konfigurationsdaten<br />

zu speichern. Protokolle <strong>der</strong> einzelnen Applikationen wie<br />

Web-Server o<strong>der</strong> Datenbank sind ebenfalls in Textdateien gespeichert.<br />

Um diese zu betrachten, Sicherheitskopien anzulegen o<strong>der</strong> sie einfach an<br />

einen an<strong>der</strong>en Ort zu verschieben, dienen diverse Linux-Kommandos.<br />

less: Dateiinhalte anzeigen<br />

Syntax<br />

Grundform: less [Optionen] Dateiname<br />

Wichtige Tastaturbefehle: / sucht in angezeigter Datei nach nächstem<br />

Vorkommen <strong>der</strong> Zeichenkette<br />

<br />

n wie<strong>der</strong>holt letzten Suchvorgang in<br />

Richtung des Dateiendes<br />

N wie<strong>der</strong>holt letzten Suchvorgang in<br />

Richtung <strong>der</strong> Dateianfangs<br />

q beendet die Anzeige des Dateiinhalts<br />

Das gängigste Hilfsprogramm zur Anzeige von Textdateien unter Linux<br />

ist less. Mit seiner Hilfe lassen sich Textdaten nicht nur betrachten, auch<br />

ein Scrollen sowie die Suche nach Zeichenfolgen sind möglich. Etwas<br />

ungewohnt für Einsteiger ist jedoch, dass less wie die meisten Linux-Utilities<br />

nicht über Menüs, son<strong>der</strong>n über Tastaturbefehle gesteuert wird.<br />

Nach dem Aufruf von less datei.name wird Ihnen <strong>der</strong> Inhalt <strong>der</strong> Datei<br />

angezeigt. In <strong>der</strong> letzten Zeile blendet less Statusinformationen ein. Hier<br />

sehen Sie, in welchem Bereich <strong>der</strong> Datei Sie sich befinden und wie viel<br />

Prozent des gesamten Dateiumfangs Sie gerade betrachten.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 187<br />

Bild 5.17 Zusätzlich zum Inhalt einer Datei blendet less Statusinformationen ein.<br />

Zum Blättern in <strong>der</strong> Datei können Sie wie gewohnt die Cursor-Tasten<br />

verwenden. Um seitenweise zu blättern, verwenden Sie die Leertaste.<br />

Einen schnellen Sprung an den Dateianfang führt ein Druck auf die Taste<br />

[G] aus, zum Dateiende gelangen Sie mithilfe von [ª]+[G]. Zum Beenden<br />

von less drücken Sie die Taste [Q].<br />

Nach Zeichenfolgen suchen<br />

Oft wollen Sie eine Datei nicht nur betrachten. Viel häufiger ist <strong>der</strong> Fall,<br />

dass Sie in einer Datei nach einem bestimmten Schlüsselwort suchen –<br />

beispielsweise, um die Einstellung einer bestimmten Option zu überprüfen.<br />

Unter less leiten Sie eine Suche durch einen vorwärts geneigten<br />

Schrägstrich »/«, den so genannten Slash, ein. Sie erreichen ihn auf <strong>der</strong><br />

Tastatur, indem Sie gleichzeitig die [ª]-Taste und die Taste [7] drücken.<br />

Dass Sie sich jetzt im Suchmodus befinden, merken Sie daran, dass statt<br />

den Informationen in <strong>der</strong> Statuszeile nun ein blinken<strong>der</strong> Cursor auf Ihre<br />

Eingabe wartet. Tragen Sie hier den gewünschten Suchbegriff ein und<br />

schicken Sie die Anfrage mit [¢] ab.


188 Kapitel 5<br />

Bild 5.18 <strong>Die</strong> Suchfunktion von less markiert alle im aktuellen Ausschnitt <strong>der</strong> Datei<br />

sichtbaren Fundstellen eines Suchbegriffs.<br />

In <strong>der</strong> Anzeige erscheinen daraufhin alle Fundorte des Suchbegriffs als<br />

hervorgehobener Text. Zusätzlich positioniert less die Anzeige so, dass<br />

die erste dargestellte Zeile <strong>der</strong> Datei die erste Fundstelle <strong>der</strong> gesuchten<br />

Zeichenkette enthält. Über die Taste [N] springen Sie zum nächsten<br />

gefundenen Eintrag, wobei die Bildschirmdarstellung stets angepasst<br />

wird. Um in <strong>der</strong> Liste <strong>der</strong> Fundstellen zurückzuspringen, verwenden Sie<br />

die Taste [ª]+[N].<br />

cp: Dateien und Verzeichnisse kopieren<br />

Syntax<br />

Grundform: cp [Optionen] Quelle Ziel<br />

Spezielle Optionen: -r kopiert rekursiv den Inhalt und alle Unterverzeichnisse<br />

eines Verzeichnisses<br />

-p behält beim Kopieren von Daten <strong>der</strong>en ursprünglichen<br />

Besitzer sowie die zugeordnete Gruppe bei


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 189<br />

Zum Kopieren einzelner Dateien sowie ganzer Verzeichnisbäume dient<br />

unter Linux <strong>der</strong> Befehl cp, eine Kurzform des englischen Worts »copy«. Ein<br />

wesentlicher Unterschied zu seinem Gegenstück unter Windows ist, dass<br />

cp stets die Angabe eines Ziels erfor<strong>der</strong>t und nicht dass man das Verzeichnis,<br />

in dem man sich gerade befindet, als Standardziel annimmt. Um beispielsweise<br />

die Datei php.ini aus dem Verzeichnis /etc ins gerade aktuelle<br />

Arbeitsverzeichnis zu kopieren, ist daher das Kommando cp /etc/php.ini.<br />

notwendig.<br />

Bild 5.19 Mittels cp lassen sich Dateien in quasi beliebige Verzeichnisse kopieren<br />

und gleichzeitig sogar umbenennen.<br />

Selbstverständlich ist es auch möglich, eine Datei in ein ganz an<strong>der</strong>es als<br />

das aktuelle Verzeichnis zu kopieren. In diesem Fall geben Sie einfach das<br />

gewünschte Zielverzeichnis als zweiten Parameter an. So kopiert <strong>der</strong><br />

Befehl cp /etc/php.ini /tmp die Datei php.ini in das Verzeichnis /tmp. Handelt<br />

es sich bei dem als zweiten Parameter angegebenen Wert nicht um<br />

ein Verzeichnis, son<strong>der</strong>n um eine Datei, o<strong>der</strong> ist das Ziel noch nicht vorhanden,<br />

so legt cp eine Datei mit dem angegebenen Namen an. Der<br />

Befehl cp /etc/php.ini /tmp/test.ini legt im Verzeichnis /tmp eine Datei mit<br />

dem Namen test.ini an, <strong>der</strong>en Inhalt dem <strong>der</strong> Originaldatei /etc/php.ini<br />

entspricht.


190 Kapitel 5<br />

Besitzer und zugeordnete Gruppe beibehalten<br />

Ein Nachteil dieser einfachen Form des Kopierens von Dateien ist, dass bei<br />

diesem Vorgang sowohl Besitzer als auch zugeordnete Gruppe einer Datei<br />

auf die Werte des Benutzers gesetzt werden, <strong>der</strong> den Kopiervorgang ausführt.<br />

Kopieren Sie also als Superuser root Dateien, dann ist die Wahrscheinlichkeit<br />

hoch, dass außer Ihnen später niemand mehr auf die Dateien<br />

zugreifen kann. Um dies zu verhin<strong>der</strong>n, existiert die Option -p, die bewirkt,<br />

dass beim Kopiervorgang <strong>der</strong> ursprüngliche Besitzer und die zugeordnete<br />

Gruppe erhalten bleiben. Um also beispielsweise aus dem Stammverzeichnis<br />

des Anwen<strong>der</strong>s testuser die Datei datei.name ins aktuelle Arbeitsverzeichnis<br />

zu kopieren, ohne Besitzer und zugeordnete Gruppe zu än<strong>der</strong>n,<br />

lautet <strong>der</strong> Befehl wie folgt:<br />

cp –p /home/testuser/datei.name .<br />

Bild 5.20 Wird cp mit <strong>der</strong> Option -p aufgerufen, behalten Dateien nach dem Kopiervorgang<br />

den ursprünglichen Besitzer und die zugeordnete Gruppe.<br />

Verzeichnisse o<strong>der</strong> <strong>der</strong>en Inhalte (rekursiv) kopieren<br />

Aber cp kann noch mehr. Auch das Kopieren ganzer Verzeichnisinhalte<br />

und sogar von Verzeichnisbäumen ist mit diesem Kommando realisierbar.<br />

Dabei müssen Sie allerdings genau darauf achten, welche Parameter


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 191<br />

Sie dem Befehl übergeben. <strong>Die</strong> folgenden Schreibweisen führen nämlich<br />

zu deutlich unterschiedlichen Resultaten:<br />

cp /etc /tmp<br />

cp /etc/* /tmp<br />

cp –r /etc/* /tmp<br />

cp –r /etc /tmp<br />

<strong>Die</strong> erste Version führt zu einer Fehlermeldung, da cp in diesem Fall zu<br />

wenige Informationen vorliegen, um den gewünschten Arbeitsmodus<br />

gesichert bestimmen zu können. Wie in <strong>der</strong> zweiten Zeile dargestellt aufgerufen,<br />

kopiert cp alle Dateien nach /tmp, die sich direkt im Verzeichnis<br />

/etc befinden, nicht aber solche, die in weiteren Unterverzeichnissen von /<br />

etc vorhanden sind. Sollen auch diese Dateien mit übertragen werden, ist<br />

die Variante aus <strong>der</strong> dritten Beispielzeile zu wählen. Der Befehl in <strong>der</strong><br />

letzten Beispielzeile schließlich bewirkt, dass in /tmp ein neues Verzeichnis<br />

mit dem Namen etc angelegt wird und erst in dieses die in /etc und darunter<br />

abgelegten Dateien kopiert werden.<br />

In den letzten beiden Beispielen sehen Sie auch eine neue Option im Einsatz:<br />

-r. Sie bewirkt, dass nicht nur die im angegebenen Verzeichnis<br />

befindlichen Dateien, son<strong>der</strong>n auch die in eventuell vorhandenen Unterverzeichnissen<br />

liegenden Dateien beim Kopiervorgang berücksichtigt<br />

werden. <strong>Die</strong>ses so genannte rekursive Kopieren erleichtert es erheblich,<br />

ganze Verzeichnisbäume zu duplizieren.<br />

Vertrauen ist gut, Kontrolle ist besser<br />

Gerade wegen seiner Flexibilität ist <strong>der</strong> Befehl cp nicht nur sehr mächtig; sein Einsatz<br />

führt auch oft zu an<strong>der</strong>en Ergebnissen als sie <strong>der</strong> Anwen<strong>der</strong> eigentlich erwartet.<br />

Kontrollieren Sie daher zumindest in <strong>der</strong> Anfangsphase stets, ob <strong>der</strong> Kopiervorgang<br />

tatsächlich so verlaufen ist, wie Sie es geplant hatten.


192 Kapitel 5<br />

mv: Dateien und Verzeichnisse verschieben<br />

Syntax<br />

Grundform: mv [Optionen] Quelle Ziel<br />

Spezielle Optionen: -b legt eine Backup-Kopie einer zu verschiebenden<br />

Datei an, sofern im angegebenen Zielverzeichnis<br />

bereits eine Datei gleichen Namens vorhanden ist<br />

Oft möchte man Daten nicht kopieren, son<strong>der</strong>n sie einfach an eine an<strong>der</strong>e<br />

Stelle im Dateisystem verschieben. <strong>Die</strong>s lässt sich unter an<strong>der</strong>em über<br />

eine Kombination aus Kopier- und Löschvorgängen erreichen. Einfacher<br />

ist es allerdings, den dafür vorgesehenen Befehl mv, eine Kurzform von<br />

»move«, zu verwenden.<br />

Wie bei allen dateibezogenen Operationen ist auch hier die Grundform<br />

eine einfache Angabe von Quelle und Ziel als Parameter des Kommandos.<br />

Genau wie beim Kopieren unterscheidet auch die Verschiebeoperation<br />

zwischen einem bereits existierenden und einem nicht vorhandenen<br />

Ziel. Zudem än<strong>der</strong>t sich die Arbeitsweise je nachdem, ob das Ziel eine<br />

Datei o<strong>der</strong> ein Verzeichnis ist. Es ergeben sich folgende Kombinationen:<br />

Bild 5.21 Der Befehl mv kann zum Verschieben sowohl von Dateien als auch von<br />

Verzeichnissen verwendet werden.<br />

Datei → existierende Datei<br />

Existiert die angegebene Zieldatei bereits, so wird sie beim Verschiebevorgang<br />

mit <strong>der</strong> Quelldatei überschrieben. Das Original wird gelöscht.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 193<br />

Datei → nicht existierende Datei<br />

Ist die angegebene Zieldatei nicht vorhanden, so wird sie mit den von<br />

Ihnen vorgegebenen Namen angelegt. <strong>Die</strong> Ausgangsdatei wird gelöscht.<br />

Datei → existierendes Verzeichnis<br />

<strong>Die</strong> Ausgangsdatei wird unter Beibehaltung ihres Namens in das angegebene<br />

Zielverzeichnis verschoben. <strong>Die</strong> Originaldatei wird gelöscht.<br />

Datei → nicht existierendes Verzeichnis<br />

<strong>Die</strong>se Kombination ist nicht möglich. Der Move-Befehl hat keine Möglichkeit<br />

zu entscheiden, ob es sich beim angegebenen Ziel um ein Verzeichnis<br />

o<strong>der</strong> eine Datei handeln soll. Da als Ausgangspunkt des<br />

Vorgangs eine Datei angegeben ist, wird auch das Ziel als Datei angelegt.<br />

Verzeichnis → existierendes Verzeichnis<br />

Das Ausgangsverzeichnis wird inklusive seines Inhalts als neues Unterverzeichnis<br />

des Ziel-Verzeichnisses angelegt. Das Original-Verzeichnis wird<br />

gelöscht.<br />

Verzeichnis → nicht existierendes Verzeichnis<br />

Das Ausgangsverzeichnis wird unter dem angegebenen Zielnamen angelegt,<br />

die im Quell-Verzeichnis enthaltenen Dateien und Verzeichnisse ins<br />

Zielverzeichnis verschoben. Das Original-Verzeichnis wird gelöscht.<br />

Verzeichnis → vorhandene Datei<br />

Es leuchtet ein, dass diese Kombination nicht möglich ist. Theoretisch<br />

bestünde zwar die Möglichkeit, ein Verzeichnis anzulegen, das denselben<br />

Namen trägt wie die angegebene Zieldatei. Allerdings bietet das Dateisystem<br />

von Linux diese Möglichkeit nicht.


194 Kapitel 5<br />

Verzeichnis → nicht vorhandene Datei<br />

Da das Verschiebe-Programm selbstständig nicht erkennen kann, ob das<br />

angegebene Ziel ein Verzeichnis o<strong>der</strong> eine Datei sein soll, entscheidet es<br />

nach dem Quellparameter und legt ein Verzeichnis an.<br />

Einfaches Umbenennen per mv<br />

Der Move-Befehl kann auch dazu verwendet werden, einzelne Dateien umzubenennen.<br />

So führt das Kommando mv datei.name neuer.name lediglich dazu, dass die<br />

bislang unter dem Namen datei.name abgelegte Datei nun den Namen neuer.name<br />

trägt.<br />

chmod: Datei- und Verzeichnisrechte än<strong>der</strong>n<br />

Syntax<br />

Grundform: chmod [Optionen] [Rechte] Ziel<br />

Spezielle Optionen: -R setzt rekursiv die Rechte aller zum angegebenen<br />

Zielfilter passenden Dateien<br />

Rechte-Format:<br />

numerisch <strong>Die</strong> gewünschten Zugriffsrechte auf die Datei<br />

werden als Zahlenkombination angegeben.<br />

über Kürzel <strong>Die</strong> Zugriffsrechte werden über Kürzel mit vorangestellten<br />

Vorzeichen gesetzt.<br />

Für jede Datei verwaltet Linux die Zugriffsrechte »Lesen«, »Schreiben« und<br />

»Ausführen« getrennt nach Besitzer einer Datei, <strong>der</strong> <strong>der</strong> Datei zugeordneten<br />

Gruppe sowie allen übrigen Anwen<strong>der</strong>n. Sie können diese Rechte in<br />

<strong>der</strong> Langform <strong>der</strong> Ausgabe eines Verzeichnisinhalts sehen, die per ls -l<br />

abrufbar ist.<br />

Zur nachträglichen Än<strong>der</strong>ung <strong>der</strong> Zugriffsrechte auf eine Datei dient das<br />

Kommando chmod, ein Kürzel für Change Access Mode. Es lässt sich in<br />

zwei Varianten aufrufen.<br />

Im ersten Fall geben Sie die gewünschten Zugriffsrechte als Ziffernfolge<br />

an, die das gewünschte Ergebnis beschreibt. Dabei gilt folgende Zuordnung<br />

zwischen gewünschtem Recht und <strong>der</strong> zugehörigen Zahl:


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 195<br />

Lesen 4<br />

Schreiben 2<br />

Ausführen 1<br />

Eine Kombination aus mehreren Rechten erfolgt durch einfache Addition<br />

<strong>der</strong> jeweiligen Zahlen. Soll beispielsweise ein Lesezugriff und zusätzlich das<br />

Ausführen <strong>der</strong> Datei möglich sein, so ist <strong>der</strong> anzugebende Wert 4+1 = 5.<br />

Da die Werte für jede Gruppe anzugeben sind, würde <strong>der</strong> Befehl zum Setzen<br />

von Lese- und Ausführen-Rechten auf die Datei datei.name wie folgt<br />

lauten:<br />

chmod 555 datei.name<br />

Der große Nachteil dieser Methode ist, dass sich mit ihrer Hilfe nicht<br />

gezielt einzelne Zugriffsrechte än<strong>der</strong>n lassen. <strong>Die</strong>ses Manko behebt die<br />

zweite Möglichkeit, die gewünschten Rechte anzugeben. Hierbei werden<br />

die einzelnen Rechte durch folgende Kürzel angegeben:<br />

Lesen r<br />

Schreiben w<br />

Ausführen x<br />

Das gewünschte Ziel spezifizieren Sie ebenfalls über ein Kürzel:<br />

Besitzer u<br />

Gruppe g<br />

Alle an<strong>der</strong>en o<br />

Das An- o<strong>der</strong> Abschalten erfolgt über ein dem Recht vorangestelltes Vorzeichen.<br />

Ein Plus aktiviert das jeweilige Recht, ein Minus entfernt es. Um<br />

beispielsweise das Schreibrecht für den Besitzer zu setzen und allen an<strong>der</strong>en<br />

Benutzern das Leserecht zu entziehen, lautet das Kommando so:<br />

chmod u+w,o-r datei.name


196 Kapitel 5<br />

Bild 5.22 <strong>Die</strong> zwei Aufrufvarianten des Befehls chmod erlauben das globale Setzen<br />

einzelner Rechte ebenso wie die direkte Modifizierung einzelner Rechte.<br />

Wollen Sie die Zugriffsrechte mehrerer Dateien auf einen Schlag setzen,<br />

dann verwenden Sie einfach die Platzhalterzeichen Stern »*« und Fragezeichen<br />

»?«. Zusätzlich können Sie sich <strong>der</strong> Option -R bedienen. Sie<br />

bewirkt, dass die Zugriffsrechte aller passenden Dateien im aktuellen<br />

sowie den unter diesem befindlichen Verzeichnissen angepasst werden.<br />

chown: Besitzer und zugeordnete Gruppe än<strong>der</strong>n<br />

Syntax<br />

Grundform: chown [Optionen] [Besitzer][:Gruppe] Ziel<br />

Spezielle Optionen: -R än<strong>der</strong>t rekursiv alle zur angegebenen Zieldefinition<br />

passenden Dateien im aktuellen Verzeichnis<br />

sowie dessen Unterverzeichnissen<br />

Spezielle Aufrufvarianten: Besitzer Um nur den Besitzer einer Datei o<strong>der</strong> eines<br />

Verzeichnisses zu än<strong>der</strong>n, geben Sie nur<br />

diesen an.<br />

:Gruppe Um lediglich die Gruppe zu än<strong>der</strong>n, <strong>der</strong><br />

eine Datei zugeordnet ist, geben Sie den<br />

Namen <strong>der</strong> Gruppe mit einem vorangestellten<br />

Doppelpunkt an.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 197<br />

Auch <strong>der</strong> Besitzer sowie die Gruppe, <strong>der</strong> eine Datei zugeordnet ist, lassen<br />

sich über ein eigenes Kommando än<strong>der</strong>n. Der Befehl chown, kurz für<br />

»Change Owner«, leistet diese Arbeit. Er ist zum Beispiel dann hilfreich,<br />

wenn Sie beim Kopieren den Parameter -p vergessen haben und nun<br />

nachträglich den Besitzer sowie die zugeordnete Gruppe einer o<strong>der</strong> mehrerer<br />

Dateien korrigieren möchten.<br />

Ähnlich wie bei chmod übergeben Sie ihm den gewünschten neuen Besitzer<br />

sowie die Gruppe und zusätzlich ein Namensmuster aller Dateien und<br />

Verzeichnisse, auf die sich die Än<strong>der</strong>ung auswirken soll.<br />

Genau wie bei chmod erreichen Sie durch den optionalen Parameter -R,<br />

dass sich diese Än<strong>der</strong>ungen nicht nur auf die Dateien im angegebenen<br />

Verzeichnis, son<strong>der</strong>n auch auf alle Dateien in Subdirectorys davon auswirken.<br />

Um beispielsweise alle Dateien im aktuellen Verzeichnis und darunter,<br />

auf die das Suchmuster test* passt, dem Besitzer test und <strong>der</strong> Gruppe<br />

nutzer zuzuordnen, dient folgen<strong>der</strong> Befehl:<br />

chown –R test:nutzer test*<br />

Beachten Sie, dass Besitzer und Gruppe durch einen Doppelpunkt<br />

getrennt werden müssen. Um nur den Besitzer, nicht aber die Gruppe zu<br />

än<strong>der</strong>n, geben Sie lediglich den Besitzernamen an:<br />

chown test datei.name<br />

Soll hingegen lediglich die Gruppe, <strong>der</strong> die Datei zugeordnet ist, nicht<br />

aber <strong>der</strong> Besitzer geän<strong>der</strong>t werden, ist das Kommando in einer leicht<br />

abweichenden Form zu geben:<br />

chown :nutzer datei.name<br />

Beachten Sie, dass <strong>der</strong> Name <strong>der</strong> neuen Gruppe nach wie vor von dem<br />

vorangestellten Doppelpunkt eingeleitet wird. Nur so kann chown erkennen,<br />

dass es sich um die Angabe einer Gruppe und nicht um die eines<br />

Benutzerkontos handelt.


198 Kapitel 5<br />

Bild 5.23 Über die verschiedenen Aufrufvarianten von chown setzen Sie Besitzer<br />

und zugeordnete Gruppe einer Datei.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 199<br />

5.4 Informationen über System und User<br />

Nun ist es zwar sicher interessant, sich kreuz und quer durch das Dateisystem<br />

bewegen und die diversen Dateien betrachten zu können. Mindestens<br />

von genau so großem Interesse ist es aber, Statusinformationen über die<br />

diversen Aspekte des Systems abzurufen. <strong>Die</strong> dazu notwendigen <strong>Befehle</strong><br />

stellt Ihnen dieses Kapitel vor.<br />

df: Verfügbare Kapazität auf den Festplatten ermitteln<br />

Syntax<br />

Grundform: df [Optionen] [Dateisystem]<br />

Spezielle Optionen: -h gibt die Größe des belegten und des freien Speicherplatzes<br />

in Kilo-, Mega- und Gigabyte statt in Byte aus<br />

-H ähnlich wie -h, verwendet aber zur Berechnung nicht<br />

den korrekten Faktor 1024 son<strong>der</strong>n 1000<br />

Eine für wohl jeden Anwen<strong>der</strong> wichtige Information ist die über den<br />

belegten sowie den noch freien Speicherplatz auf den Festplatten des Systems.<br />

Der Befehl df, eine Abkürzung für »Disk Free«, liefert genau diese<br />

Daten. Ohne jegliche Parameter aufgerufen gibt df die Daten aller im<br />

Rechner vorgefundenen Partitionen aus.<br />

<strong>Die</strong> Anzeige von df verwendet standardmäßig die Anzahl <strong>der</strong> belegten<br />

sowie <strong>der</strong> noch verfügbaren Datenblöcke auf den Medien. Da diese Information<br />

oft erst über das Multiplizieren mit <strong>der</strong> realen Blockgröße zu einfach<br />

lesbaren Ergebnissen führt, bietet df zwei Optionen an, die dem<br />

Anwen<strong>der</strong> die Arbeit abnehmen.<br />

Um die jeweiligen Werte in Kilo-, Mega- o<strong>der</strong> Gigabyte angezeigt zu<br />

bekommen, verwenden Sie die Option -h. Sie verwendet zur Berechnung<br />

<strong>der</strong> Daten einen Teiler von 1024, berechnet also die im Computer-Umfeld<br />

korrekten Ergebnisse. Etwas an<strong>der</strong>s arbeitet die Option -H. Sie verwendet<br />

als Teiler den Wert 1000, liefert also etwas höhere Werte zurück.


200 Kapitel 5<br />

Bild 5.24 Mithilfe von df erhalten Sie wertvolle Informationen über den Füllstand<br />

<strong>der</strong> Festplatten-Partitionen im HighEnd-Server.<br />

Zusätzlich können Sie die Ausgabe noch auf ein einzelnes Dateisystem<br />

einschränken, indem Sie entwe<strong>der</strong> dessen Einhängepunkt (Mount-Point)<br />

o<strong>der</strong> den Namen seines physikalischen Geräts angeben.<br />

du: Von einem Verzeichnis belegten Plattenplatz ermitteln<br />

Syntax<br />

Grundform: du [Optionen] [Ziel]<br />

Spezielle Optionen: -h gibt die Größe des belegten Speicherplatzes in<br />

Kilo-, Mega- und Gigabyte statt in Byte aus<br />

-H ähnlich wie -h, verwendet aber zur Berechnung<br />

nicht den korrekten Faktor 1024 son<strong>der</strong>n 1000<br />

-s unterdrückt die Ausgabe <strong>der</strong> Informationen für<br />

Unterverzeichnisse des Zielpfads<br />

Ist die Festplatte an den Grenzen ihrer Kapazität angelangt, möchte man<br />

natürlich gerne den Verursacher finden. <strong>Die</strong>se Arbeit erleichtert <strong>der</strong><br />

Befehl du, eine Abkürzung für »Disk Usage«. Es gibt für ein angegebenes


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 201<br />

Verzeichnis den von ihm belegten Speicherplatz aus – inklusive aller eventuell<br />

existierenden Unterverzeichnisse.<br />

<strong>Die</strong> dabei ausgegebene Liste kann, abhängig von <strong>der</strong> Zahl <strong>der</strong> vorhandenen<br />

Unterverzeichnisse, recht lang sein. Daher erlaubt es die Option -s, die<br />

Ausgabe auf die insgesamt belegte Menge einzuschränken. Zusätzlich können<br />

Sie mithilfe <strong>der</strong> bereits vom Befehl df bekannten Optionen -h und -H<br />

die Ausgabe statt in Bytes in Kilo-, Mega- und Gigabyte erfolgen lassen.<br />

Bild 5.25 Der Befehl du ermittelt, wie viel Speicherplatz von einem Verzeichnis und<br />

dessen Subdirectorys belegt wird.<br />

users: Angemeldete Benutzer anzeigen<br />

Syntax<br />

Grundform: users<br />

Ein recht simples, doch oft hilfreiches Kommando ist users. Es gibt eine<br />

Liste <strong>der</strong> aktuell am HighEnd-Server angemeldeten Benutzer aus. Sollten<br />

Sie zum Beispiel die Befürchtung haben, dass sich unautorisierte Anwen-


202 Kapitel 5<br />

<strong>der</strong> auf dem Rechner zu schaffen machen, können Sie mithilfe von users<br />

überprüfen, ob außer den berechtigten Anwen<strong>der</strong>n auch noch an<strong>der</strong>e auf<br />

dem System zu Gange sind.<br />

Allerdings informiert Sie users nur über die gerade angemeldeten Anwen<strong>der</strong>,<br />

nicht jedoch darüber, ob mit einem Konto innerhalb eines gewissen<br />

Zeitraums ein Login vorgenommen wurde.<br />

Bild 5.26 Der Befehl users gibt eine Liste <strong>der</strong> aktuell am HighEnd-Server angemeldeten<br />

Benutzer aus.<br />

id: Gruppenzugehörigkeit eines Benutzers ermitteln<br />

Syntax<br />

Grundform: id [Optionen] [Benutzerkonto]<br />

Spezielle Optionen: -g gibt nur die Gruppennummer <strong>der</strong> primären Gruppe<br />

aus<br />

-G gibt die Gruppennummern <strong>der</strong> weiteren Gruppen<br />

aus<br />

-u gibt nur die Benutzerkontonummer aus<br />

-n gibt statt <strong>der</strong> Nummern den Namen von Gruppe<br />

o<strong>der</strong> Benutzerkonto aus<br />

Wollen Sie mehr Informationen über ein Benutzerkonto erhalten, hilft<br />

Ihnen <strong>der</strong> Befehl id weiter. Er zeigt Ihnen zu einem angegebenen Benutzerkonto<br />

dessen Nummer sowie primäre und weitere Gruppenzugehörigkeiten<br />

an.<br />

Ohne Parameter aufgerufen liefert id die Informationen für die aktuell<br />

verwendete Benutzerkennung. Geben Sie als Parameter eine Benutzerkennung<br />

an, erhalten Sie die Informationen über das spezifizierte Konto.<br />

Weitere Einschränkungen sind über die Optionen -g, -G und -u möglich.<br />

<strong>Die</strong> erste Option bewirkt, dass lediglich die Nummer <strong>der</strong> primären<br />

Gruppe ausgegeben wird. Im zweiten Fall werden die Nummern aller


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 203<br />

weiteren Gruppen angezeigt, denen <strong>der</strong> Benutzer angehört. Über die<br />

letzte Option schließlich lassen Sie sich nur die Nummern des Benutzerkontos<br />

anzeigen.<br />

Können Sie mit den Nummern nicht viel anfangen, hilft die Option -n<br />

weiter. Sie bewirkt, dass statt Nummern die Namen <strong>der</strong> jeweiligen Gruppen<br />

o<strong>der</strong> Benutzerkonten ausgegeben werden.<br />

Bild 5.27 Zusätzliche Informationen über einen Benutzer liefert <strong>der</strong> Befehl id.<br />

top: Systemauslastung ermitteln<br />

Syntax<br />

Grundform: top [Optionen] [Parameter]<br />

Wichtige Tastaturbefehle: c schaltet die Anzeige zwischen Programmnamen<br />

und <strong>Kommandozeile</strong>n-Modus um<br />

M zeigt die Prozesse mit dem größten Speicherverbrauch<br />

an<br />

P zeigt die Prozesse mit dem größten Verbrauch<br />

an CPU-Zeit an<br />

q beendet das Programm<br />

Spezielle Optionen:<br />

-u zeigt nur die Prozesse an, die unter dem<br />

Konto des Benutzers laufen<br />

Reagiert <strong>der</strong> Server zu langsam auf Anfragen, beschweren sich die Besucher<br />

des Web-Auftritts über dahintröpfelnden Seitenaufbau, und reagiert<br />

die Datenbank nur noch wi<strong>der</strong>willig auf Anfragen, dann ist <strong>der</strong> Server<br />

höchstwahrscheinlich ausgelastet. Aufschluss über mögliche Verursacher<br />

gibt das Hilfsprogramm top.


204 Kapitel 5<br />

Für gewöhnlich wird es ohne Optionen o<strong>der</strong> Parameter aufgerufen und<br />

zeigt diejenigen Prozesse an, die die meisten CPU-Zyklen verbrauchen.<br />

Zusätzlich bietet das Programm im Kopf <strong>der</strong> Anzeige weitere Status-<br />

Informationen an.<br />

Bild 5.28 Das Utility top liefert umfangreiche Informationen über die Auslastung<br />

Ihres HighEnd-Servers.<br />

<strong>Die</strong> Hea<strong>der</strong>-Informationen<br />

In <strong>der</strong> ersten Bildschirmzeile sehen Sie neben <strong>der</strong> Zeit, die <strong>der</strong> Server seit<br />

dem letzten Neustart online ist, die Zahl <strong>der</strong> aktuell angemeldeten Benutzer<br />

sowie die durchschnittliche Auslastung des Servers. <strong>Die</strong>se wird durch<br />

drei verschiedene Werte repräsentiert. Der erste davon zeigt die aktuelle<br />

Auslastung, <strong>der</strong> zweite die durchschnittliche Last während <strong>der</strong> letzten fünf<br />

Minuten und <strong>der</strong> letzte schließlich den Durchschnitt <strong>der</strong> letzten Stunde.<br />

Alle drei Werte sollten im Idealfall deutlich unter 1.00 liegen. Werte grö-


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 205<br />

ßer als 1 signalisieren, dass <strong>der</strong> Server unter zu hoher Last arbeitet, Werte<br />

größer als 5 zeigen an, dass etwas definitiv nicht in Ordnung ist.<br />

Kurzfristige Lastspitzen sind normal<br />

Sollten Sie beim Aufruf von top erhöhte Werte für die durchschnittliche Last <strong>der</strong><br />

letzten Minuten o<strong>der</strong> Stunde sehen, ist das nicht gleich ein Grund zur Besorgnis.<br />

Arbeitsintensive Aufgaben wie beispielsweise die Auswertung von Protokolldateien<br />

können dazu führen, dass die Last kurzfristig ansteigt. Nach Abschluss <strong>der</strong><br />

Arbeiten sinkt die Last aber wie<strong>der</strong> auf einen normalen Pegel ab. Erst wenn die<br />

Last dauerhaft zu hoch ist, sollten Sie die Suche nach dem Übeltäter beginnen<br />

In <strong>der</strong> zweiten Zeile sehen Sie eine Zusammenfassung <strong>der</strong> aktuell laufenden<br />

Prozesse, Tasks genannt. Zuerst ist hier <strong>der</strong>en Gesamtzahl aufgeführt,<br />

gefolgt von <strong>der</strong> Zahl <strong>der</strong> aktiven Prozesse. Es folgen die momentan<br />

schlafenden und die angehaltenen Tasks. Am Ende <strong>der</strong> Zeile sehen Sie<br />

eine Angabe über so genannte Zombies. Sollte hier etwas an<strong>der</strong>es als eine<br />

Null stehen, heißt das, dass ein Prozess keine Rückmeldungen mehr an<br />

das System liefert, also wahrscheinlich abgestürzt ist.<br />

<strong>Die</strong> dritte Zeile gibt Aufschluss über die aktuelle Auslastung <strong>der</strong> CPU<br />

Ihres HighEnd-Servers. Hier sehen Sie, wie viel Prozent <strong>der</strong> CPU-Kapazität<br />

von Prozessen belegt wird, die vom Anwen<strong>der</strong> o<strong>der</strong> dem System<br />

gestartet wurden. Der Prozentsatz bei <strong>der</strong> mit »nice« beschrifteten Angabe<br />

informiert darüber, wie viel Leistung vom System zurück- o<strong>der</strong> hochgestufte<br />

Prozesse in Anspruch nehmen. Der Idle-Wert schließlich besagt,<br />

wie viel Leistung <strong>der</strong> CPU noch für weitere Prozesse zur Verfügung steht.<br />

Informationen über die Nutzung des dem System zur Verfügung stehenden<br />

Speichers können Sie den nächsten beiden Zeilen entnehmen. <strong>Die</strong><br />

erste davon enthält die relevanten Daten für den im Rechner verbauten<br />

Hauptspeicher. Der Reihenfolge nach werden Ihnen <strong>der</strong> gesamte Hauptspeicher,<br />

die davon genutzte Menge, <strong>der</strong> noch verbleibende Speicher<br />

sowie <strong>der</strong> für Puffer verwendete Bereich angezeigt. <strong>Die</strong> an<strong>der</strong>e Zeile informiert<br />

über die Nutzung des Auslagerungsbereichs auf <strong>der</strong> Festplatte und<br />

gibt weitere Details über die Hauptspeichernutzung an. <strong>Die</strong> ersten drei<br />

Werte enthalten die Gesamtgröße des Swap-Bereichs, die Menge <strong>der</strong> ausgelagerten<br />

Daten und den noch verfügbaren Speicherplatz. Der letzte<br />

Wert hingegen bezieht sich wie<strong>der</strong> auf den Hauptspeicher und zeigt an,<br />

wie viele Daten Linux in seinem internen Cache vorhält.


206 Kapitel 5<br />

<strong>Die</strong> Prozess-Übersicht<br />

Unter dem Kopfteil sehen Sie eine Prozessliste, die sich laufend än<strong>der</strong>t.<br />

Alle drei Sekunden ermittelt top die neue Rangfolge. Standardmäßig sortiert<br />

es die Liste dabei nach <strong>der</strong> von den Tasks verbrauchten CPU-Zeit.<br />

Über Tastaturkommandos haben Sie die Möglichkeit, die Menge <strong>der</strong><br />

angezeigten Informationen zu beeinflussen sowie das zur Sortierung herangezogene<br />

Kriterium zu än<strong>der</strong>n.<br />

<strong>Die</strong> Prozessliste ist in mehrere Spalten aufgeteilt. In <strong>der</strong> ersten Spalte<br />

sehen Sie die Prozess-ID des jeweiligen Tasks. <strong>Die</strong> zweite Spalte gibt Aufschluss<br />

über den Besitzer, also auch über die Rechte, mit denen ein Prozess<br />

ausgestattet ist. <strong>Die</strong> dritte und vierte Spalte zeigen die Priorität eines<br />

Prozesses sowie dessen Nice-Status. Beide Werte können im Bereich von<br />

-20 bis +20 liegen, wobei nur das negative Vorzeichen angezeigt wird. Je<br />

niedriger <strong>der</strong> Wert, desto höher ist die Priorität des Tasks. <strong>Die</strong> mit VIRT,<br />

RES und SHR betitelten Spalten liefern verschiedene Informationen über<br />

den Speicherverbrauch des Tasks. Unter VIRT finden Sie die Menge des<br />

virtuellen Speichers, den ein Prozess für sich reserviert hat. Der Wert unter<br />

RES gibt an, wie viel davon tatsächlich vom Prozess belegt wird. Unter<br />

SHR zeigt top an, wie groß <strong>der</strong> Speicher ist, den sich ein Prozess mit an<strong>der</strong>en<br />

Anwendungen teilt. <strong>Die</strong> Angaben unter %CPU und %MEM spiegeln<br />

den Anteil an den jeweils verfügbaren Gesamtmengen wi<strong>der</strong>, die <strong>der</strong> jeweilige<br />

Prozess belegt. <strong>Die</strong> Spalte TIME nennt nicht etwa die Zeit, seit <strong>der</strong> ein<br />

Prozess schon läuft. Vielmehr ist hier die bislang vom Task verbrauchte<br />

CPU-Zeit aufgeführt. Unter COMMAND schließlich sehen Sie, welchem<br />

Programm Sie die einzelnen Werte zuordnen dürfen (s. Bild 5.29).<br />

Um die Auswertung zu erleichtern, bietet top einige Tastaturkommandos,<br />

mit <strong>der</strong>en Hilfe sich die Sortierung sowie die Detailtiefe <strong>der</strong> Anzeige<br />

beeinflussen lassen. Wollen Sie beispielsweise die Prozesse mit dem größten<br />

Verbrauch an Hauptspeicher sehen, drücken Sie die Taste [ª]+[M].<br />

Möchten Sie statt des Tasks die komplette <strong>Kommandozeile</strong> sehen, die zu<br />

seinem Aufruf geführt hat, drücken Sie [C]. Zum Beenden von top drücken<br />

Sie [Q].


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 207<br />

Bild 5.29 Das Hilfsprogramm top kann die laufenden Prozesse auch nach <strong>der</strong> von<br />

ihnen belegten Speichermenge sortieren.<br />

Prozessanzeige auf Tasks eines Users beschränken<br />

Vermuten Sie, dass eine hohe Last auf dem Server durch Tasks verursacht<br />

wird, die unter einem bestimmten Benutzerkonto laufen, können<br />

Sie top auf die Anzeige dieser Prozesse beschränken. Dazu übergeben Sie<br />

dem Hilfsprogramm die Option -u, gefolgt vom Namen des gewünschten<br />

Benutzerkontos. Um beispielsweise alle Tasks des vom Web-Server Apache<br />

verwendeten Benutzerkontos wwwrun anzeigen zu lassen, verwenden<br />

Sie folgenden Befehl:<br />

top –u wwwrun


208 Kapitel 5<br />

Bild 5.30 Auch die Beschränkung <strong>der</strong> Ausgabe auf die Prozesse eines einzelnen Nutzers<br />

ist möglich.<br />

ps: Laufende Prozesse anzeigen<br />

Syntax<br />

Grundform: ps [Optionen]<br />

Spezielle Optionen: a gibt den Status aller laufenden Prozesse aus<br />

x gibt auch den Status <strong>der</strong> Prozesse aus, die nicht von<br />

einer <strong>Kommandozeile</strong> aus gestartet wurden<br />

w gibt mehr Informationen zu den einzelnen Tasks aus<br />

Eine ähnliche Funktion wie top erfüllt das Hilfsprogramm ps, das <strong>der</strong> Anzeige<br />

des Prozess-Status dient. Im Gegensatz zu top liefert es jedoch keine<br />

ständig aktualisierte Ansicht, son<strong>der</strong>n gibt eine Liste <strong>der</strong> aktuell laufenden<br />

Tasks aus und beendet sich dann wie<strong>der</strong>.<br />

Ohne jegliche Optionen aufgerufen zeigt ps eine Liste <strong>der</strong> vom aktuellen<br />

Anwen<strong>der</strong> über seine <strong>Kommandozeile</strong>nsitzung kontrollierten Prozesse<br />

an. Über den Parameter a, <strong>der</strong> im Gegensatz zu den meisten an<strong>der</strong>en<br />

Linux-Hilfsprogrammen nicht durch ein vorangestelltes Minuszeichen<br />

eingeleitet wird, erhalten Sie eine Übersicht aller Tasks, die von einer<br />

beliebigen <strong>Kommandozeile</strong> aus gestartet wurden. Mittels ps x gestartet<br />

zeigt das Utility auch die Prozesse an, die bereits während des System-


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 209<br />

starts in Aktion traten. Um noch weitere Informationen über die laufenden<br />

Tasks zu erhalten, verwenden Sie die Option w. Sie bewirkt, dass das<br />

den Task aufrufende Kommando in seiner Langform dargestellt wird.<br />

Bild 5.31 <strong>Die</strong> verschiedenen Optionen des Hilfsprogramms ps wirken sich direkt auf<br />

die ausgegebene Datenmenge aus.


210 Kapitel 5<br />

5.5 Nützliche Helferlein<br />

Auch unter Linux gibt es einige nützliche Hilfsprogramme, die zwar zum<br />

Teil nur selten benötigt werden, die man aber trotzdem kennen sollte.<br />

Einige davon stellt Ihnen dieser Abschnitt des Buchs vor.<br />

which: Speicherort eines Hilfsprogramms ermitteln<br />

Syntax<br />

Grundform: which [Optionen] Programmname<br />

Spezielle Optionen: -a zeigt nicht nur das erste gefundene, son<strong>der</strong>n alle dem<br />

angegebenen Namen entsprechenden Dateien an<br />

Gerade unter Linux kann es passieren, dass <strong>der</strong> Aufruf eines Programms<br />

nicht zum gewünschten Ergebnis führt. Schuld daran ist oft, dass mehrere<br />

unterschiedliche Versionen einer Anwendung in unterschiedlichen Verzeichnissen<br />

auf dem Rechner installiert sind, sich aber ausgerechnet eine<br />

veraltete im Suchpfad befindet. Außerdem kann es durchaus vorkommen,<br />

dass zwei unterschiedliche Pakete Hilfsprogramme gleichen Namens verwenden,<br />

die aber eine völlig unterschiedliche Funktion haben.<br />

Um festzustellen, welches Programm beim Absetzen eines Befehls auf <strong>der</strong><br />

<strong>Kommandozeile</strong> wirklich aufgerufen wird, dient das Kommando which.<br />

Es durchsucht den Suchpfad des aktuellen Benutzerkontos nach Dateien,<br />

die dem ihm als Parameter übergebenen Namen entsprechen.<br />

Im Normalbetrieb ohne weitere Optionen beendet es die Suche bei <strong>der</strong><br />

ersten Fundstelle und gibt die kompletten Pfadinformationen <strong>der</strong> gefundenen<br />

Datei aus. Wollen Sie, dass which Ihnen alle passenden Dateien<br />

auflistet, verwenden Sie die Option -a.<br />

Gibt which für einen funktionierenden Befehl keine Fundstelle aus, so<br />

handelt es sich bei dem gesuchten Kommando um eine interne Funktion<br />

des Kommandointerpreters.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 211<br />

Bild 5.32 Das Utility which ermittelt den kompletten Aufrufpfad eines Hilfsprogramms<br />

– sofern es sich nicht um einen internen Befehl handelt.<br />

find: Dateien nach verschiedenen Kriterien suchen<br />

Syntax<br />

Grundform: find <br />

Nützliche Kriterien: -name zeigt alle Dateien an, die dem nach -name angegebenen<br />

Suchmuster entsprechen<br />

-iname wie -name, aber ignoriert Groß- und Kleinschreibung<br />

-size zeigt alle Dateien an, <strong>der</strong>en Größe dem nach -size<br />

angegebenen Kriterium entsprechen.<br />

<strong>Die</strong> Suche nach Dateien ist eine <strong>der</strong> häufigsten Arbeiten, die man auf dem<br />

HighEnd-Server erledigt. Sei es, dass man eine Konfigurationsdatei für<br />

eine Applikation sucht o<strong>der</strong> wissen möchte, wo man das Archiv mit dem<br />

dringend benötigten Modul für die Web-Applikation gespeichert hat. Für<br />

die Aufgabe ist das Hilfsprogramm find das passende Werkzeug. Seine<br />

Bedienung ist recht einfach: Als Parameter übergeben Sie find einen Verzeichnispfad,<br />

in dem es seine Suche beginnen soll. Zusätzlich teilen Sie<br />

dem Utility mit, nach welchem Kriterium es die Suche durchführen soll.<br />

Um beispielsweise alle Konfigurationsdateien unterhalb des Verzeichnisses<br />

/etc zu lokalisieren, die mit dem Buchstaben l beginnen, lautet <strong>der</strong><br />

Befehl wie folgt:<br />

find /etc –name l*.conf


212 Kapitel 5<br />

Sind Sie sich nicht sicher, ob die gesuchte Datei mit einem großen o<strong>der</strong><br />

einem kleinen L geschrieben wird, dann verwenden Sie einfach die Suchvariante,<br />

bei <strong>der</strong> die Schreibweise ignoriert wird:<br />

find /etc –iname l*.conf<br />

Sie können die Platzhalterzeichen Stern und Fragezeichen in <strong>der</strong> Suchmaske<br />

des Dateinamens beliebig oft verwenden. Beispielsweise liefert die<br />

Maske l*.c* auch die Dateien, die statt mit <strong>der</strong> Endung .conf mit dem<br />

Namenszusatz .cfg enden.<br />

Bild 5.33 Das Utility find ist <strong>der</strong> ultimative Helfer bei <strong>der</strong> Suche nach Dateien.<br />

Doch damit ist das Potenzial von find noch nicht erschöpft. Neben <strong>der</strong><br />

Suche anhand von Namensmustern ist es auch in <strong>der</strong> Lage, Dateien aufzuspüren,<br />

die an<strong>der</strong>en Kriterien entsprechen. Oft ist es zum Beispiel<br />

schwierig, allein mithilfe von du zu ermitteln, welche Dateien denn nun<br />

genau durch übermäßige Größe wertvollen Speicherplatz auf <strong>der</strong> Festplatte<br />

des HighEnd-Servers belegen. Mit find finden Sie dies schnell heraus,<br />

indem Sie es nach Dateien suchen lassen, die eine bestimmte Größe<br />

überschreiten:<br />

find /var –size +1000k<br />

So aufgerufen sucht find nach allen Dateien, die mehr als 1000 Kilobyte<br />

Festplattenplatz belegen. Beachten Sie das Pluszeichen vor <strong>der</strong> Größenangabe.<br />

Fehlt es, sucht find nach allen Dateien, die genau 1000 Kilobyte<br />

belegen. Ein vorangestelltes Minuszeichen bewirkt die Ausgabe aller<br />

Dateien, <strong>der</strong>en Größe den Vorgabewert unterschreitet.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 213<br />

Bild 5.34 Platzverschwen<strong>der</strong>n auf <strong>der</strong> Spur: find ist auch in <strong>der</strong> Lage, die Größe<br />

einer Datei als Suchkriterium heranzuziehen.<br />

grep: Zeichenketten in Dateien finden<br />

Syntax<br />

Grundform: grep [Optionen] [Dateimaske]<br />

Spezielle Optionen: -i schaltet die Unterscheidung zwischen Groß- und<br />

Kleinschreibung ab<br />

-r aktiviert eine rekursive Suche durch alle Unterverzeichnisse<br />

Fast ebenso häufig wie die Suche nach einer Datei, die einem bestimmten<br />

Namensmuster entspricht, ist die Suche nach beliebigen Dateien, die<br />

bestimmte Texte enthalten. Für diese Aufgabe ist das Utility grep <strong>der</strong> richtige<br />

Helfer. Aufgerufen mit dem zu suchenden Text sowie einer Dateimaske<br />

als Parameter liefert es eine Liste aller Dateien, die den Suchtext<br />

enthalten.<br />

Über die Option -i teilen Sie grep mit, dass es bei seiner Suche nicht zwischen<br />

Groß- und Kleinschreibung unterscheiden soll. Soll nicht nur im<br />

aktuellen Verzeichnis, son<strong>der</strong>n auch in dessen Unterverzeichnissen<br />

gesucht werden, geben Sie die Option -r an.


214 Kapitel 5<br />

Allerdings ist hierbei zu beachten, dass grep bei <strong>der</strong> rekursiven Suche nur<br />

in solche Verzeichnisse wechselt, auf die die angegebene Dateimaske<br />

passt. So führt ein Aufruf von grep -ri »strato« *.conf mit großer Wahrscheinlichkeit<br />

nicht zum gewünschten Ergebnis, da ziemlich sicher keine<br />

Verzeichnisse existieren, die <strong>der</strong> Maske *.conf entsprechen. In diesem Fall<br />

ist <strong>der</strong> generelle Aufruf grep -ri »strato« * die sicherere Wahl.<br />

Bild 5.35 <strong>Die</strong> Suche nach Dateien, die eine bestimmte Zeichenfolge enthalten, wird<br />

mit grep zum Kin<strong>der</strong>spiel.<br />

Lastintensive Suchvorgänge vermeiden<br />

Grep ist ein sehr leistungsfähiges Hilfsprogramm. Daher ist die Versuchung groß,<br />

es zu global einzusetzen – beispielsweise um vom Wurzelverzeichnis aus alle<br />

Dateien suchen zu lassen, die einen bestimmten Text enthalten.<br />

Mit einer <strong>der</strong>artigen Suche belasten Sie den Server erheblich. Schließlich muss<br />

grep für diese Aktion jede auf dem Server gespeicherte Datei von vorne bis hinten<br />

durchsuchen. <strong>Die</strong> damit verbundenen Dateioperationen erzeugen eine immense<br />

Last, die sogar zur kurzfristigen Nicht-Erreichbarkeit von <strong>Die</strong>nsten wie Web- o<strong>der</strong><br />

FTP-Server führen kann.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 215<br />

su: Zu an<strong>der</strong>em Benutzerkonto umschalten<br />

Syntax<br />

Grundform: su [Optionen] <br />

Spezielle Optionen: - bewirkt den Aufruf einer Login-Shell als User root<br />

-m übernimmt die Umgebungsvariablen <strong>der</strong> aktuellen<br />

Sitzung in die neue Shell<br />

Ein wichtiges Kommando für Administratoren ist <strong>der</strong> Befehl su, eine<br />

Abkürzung für Switch User o<strong>der</strong> Substitute User. Mit seiner Hilfe können<br />

Sie sich in einer bestehenden Sitzung unter einem an<strong>der</strong>en Konto anmelden<br />

und mit dessen Rechten arbeiten. <strong>Die</strong> Arbeitsweise des Befehls unterscheidet<br />

sich je nachdem, ob Sie als normaler Anwen<strong>der</strong> o<strong>der</strong> als<br />

Superuser root am HighEnd-Server angemeldet sind.<br />

su als Superuser verwenden<br />

<strong>Die</strong> einfachste Verwendung von su ist es, als Administrator schnell zum<br />

Konto eines normalen Benutzers zu wechseln – etwa um ein Problem mit<br />

dessen Rechten und Einstellungen nachzuvollziehen o<strong>der</strong> aber, um Konfigurationsdateien<br />

zu erstellen, die später von diesem Benutzerkonto aus<br />

weiter verwaltet werden können. Um sich beispielsweise als Benutzer<br />

test0123 anzumelden, genügt im Superuser-Modus folgen<strong>der</strong> Befehl:<br />

su test0123<br />

Beachten Sie dabei, dass <strong>der</strong> Befehl su zwar das verwendete Konto, nicht<br />

aber das aktuelle Verzeichnis wechselt. Es kann daher passieren, dass Sie<br />

sich nach <strong>der</strong> Ausführung in einem Verzeichnis befinden, für das Sie keinerlei<br />

Rechte haben. Wechseln Sie in diesem Fall einfach mittels cd in das<br />

Heimatverzeichnis des Anwen<strong>der</strong>s, unter dessen Konto Sie sich angemeldet<br />

haben.<br />

Eine Son<strong>der</strong>form des Kommandos ist <strong>der</strong> Aufruf mit <strong>der</strong> Option -m. Sie<br />

bewirkt, dass alle gesetzten Umgebungsvariablen in die neue Shell übernommen<br />

werden. Das ist beson<strong>der</strong>s dann hilfreich, wenn Sie eigene Alias-<br />

Definitionen angelegt haben.


216 Kapitel 5<br />

su als normaler Anwen<strong>der</strong> benutzen<br />

Auch für normale Benutzerkonten steht <strong>der</strong> Befehl su zur Verfügung. Der<br />

große Unterschied im Vergleich zum Einsatz als Superuser root besteht<br />

darin, dass in diesem Fall nicht einfach <strong>der</strong> Wechsel zum angegebenen<br />

Benutzerkonto stattfindet. Zusätzlich wird hier noch das Passwort zum<br />

gewünschten Account abgefragt.<br />

Ein Son<strong>der</strong>fall ist das Kommando su -. Auf diese Weise aufgerufen versucht<br />

su, Sie als Superuser root anzumelden. Das ist praktisch, wenn Sie<br />

dem Konto root aus Sicherheitsgründen keinen SSH-Zugriff auf den Server<br />

geben wollen. Sie melden sich dann einfach als normaler Benutzer an<br />

und wechseln anschließend in den Superuser-Modus.<br />

man: Hilfe zu <strong>Befehle</strong>n und Konfigurationsdateien<br />

Syntax<br />

Grundform: man [Sektion] <br />

Spezielle Optionen: -f gibt eine Kurzbeschreibung des gesuchten Befehls<br />

aus<br />

-k sucht in allen Kurzbeschreibungen nach <strong>der</strong> angegebenen<br />

Zeichenkette und gibt eine Liste <strong>der</strong> Fundstellen<br />

aus<br />

Bei <strong>der</strong> Arbeit auf <strong>der</strong> <strong>Kommandozeile</strong> Ihres HighEnd-Servers o<strong>der</strong> bei<br />

<strong>der</strong> Lektüre weiterführen<strong>der</strong> Literatur werden Sie sicher schnell auf<br />

Linux-<strong>Befehle</strong> stoßen, die im Rahmen dieses Buchs nicht abgehandelt<br />

werden. Um <strong>der</strong>en Funktion sowie eventuelle Optionen und Parameter<br />

herauszufinden, bietet sich das Hilfsprogramm man an. Es bietet den<br />

Zugriff auf die zu den meisten Programmen als Textdatei abgelegten<br />

Hilfe-Informationen. Um zum Beispiel die Beschreibung des Befehls ls<br />

abzurufen, geben Sie einfach folgendes Kommando ein:<br />

man ls<br />

Wollen Sie nur eine kurze Beschreibung <strong>der</strong> Funktion eines Programms<br />

und nicht die komplette Bedienungsanleitung, benutzen Sie einfach die


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 217<br />

Option -f. Sie gibt zum gesuchten Befehl lediglich den Kurztext aus <strong>der</strong><br />

Überschrift <strong>der</strong> Bedienungsanleitung aus.<br />

Interessiert es Sie, in welchen Beschreibungen zu Hilfsprogrammen ein<br />

bestimmter Suchbegriff vorkommt, hilft die Option -k weiter. Wollen Sie<br />

sich eine Liste aller Programmbeschreibungen ausgeben lassen, in denen<br />

zum Beispiel <strong>der</strong> Begriff unzip vorkommt, dann geben Sie einfach man -k<br />

unzip auf <strong>der</strong> <strong>Kommandozeile</strong> ein.<br />

5.6 Wichtige Hilfsprogramme<br />

Ohne Programme zur einfachen Navigation im Dateisystem o<strong>der</strong> zum<br />

Editieren von Dateien kommt kein Anwen<strong>der</strong> aus. Das folgende Kapitel<br />

stellt einige Programme vor, die Ihnen die Arbeit auf <strong>der</strong> <strong>Kommandozeile</strong><br />

erleichtern.<br />

vi: Der Texteditor<br />

Syntax<br />

Grundform: vi <br />

Wichtige<br />

Tastaturkommandos:<br />

[Esc] wechselt vom Editier- zurück in den Kommandomodus<br />

1 stellt im Kommandomodus die Schreibmarke auf<br />

den Zeilenanfang<br />

$ stellt im Kommandomodus die Schreibmarke auf<br />

das Zeilenende<br />

dd löscht die aktuelle Zeile<br />

gg bewegt die Schreibmarke an den Anfang <strong>der</strong><br />

Datei<br />

G bewegt die Schreibmarke ans Ende <strong>der</strong> Datei<br />

i wechselt vom Kommando- in den Eingabemodus<br />

a wechselt vom Kommando- in den Anfügemodus<br />

r das aktuell unter <strong>der</strong> Schreibmarke befindliche<br />

Zeichen wird durch die nächste gedrückte Taste<br />

ersetzt<br />

R wechselt vom Kommando- in den Überschreiben-<br />

Modus


218 Kapitel 5<br />

Syntax<br />

Sicher, Textdateien lassen sich auch per FTP o<strong>der</strong> SCP auf den lokalen<br />

Rechner übertragen, dort bearbeiten und anschließend wie<strong>der</strong> zum HighEnd-Server<br />

senden. Doch vor allem für kleinere Än<strong>der</strong>ungen, beispielsweise<br />

an einer Konfigurationsdatei, lohnt dieser Aufwand nicht.<br />

Auf dem HighEnd-Server ist bereits <strong>der</strong> Texteditor vi installiert. Bei ihm<br />

handelt es sich um ein sehr leistungsfähiges Werkzeug, das jedoch beson<strong>der</strong>s<br />

Einsteiger for<strong>der</strong>t. Seine Bedienung orientiert sich nämlich nicht an<br />

einem <strong>der</strong> unter Windows verfügbaren Editoren, son<strong>der</strong>n fußt vielmehr<br />

auf einer Mischung aus Tastaturkommandos und regulären Ausdrücken.<br />

Aber keine Sorge, schon nach kurzer Eingewöhnungsphase lässt sich mit<br />

vi hervorragend arbeiten.<br />

Für einen ersten Test empfiehlt es sich, mit einer Datei zu arbeiten, die<br />

gefahrlos geän<strong>der</strong>t werden kann. Das ist kein Problem, da vi eine als Parameter<br />

übergebene Datei selbstständig anlegt, sollte sie noch nicht vorhanden<br />

sein. Damit gleich etwas Text für Übungen vorhanden ist, können<br />

Sie aber auch eine bestehende Datei kopieren und diese verwenden. Für<br />

die nachfolgenden Beispiele verwenden wir eine Kopie <strong>der</strong> Datei /etc/php.<br />

ini, die wir als test.txt ins aktuelle Verzeichnis kopieren und anschließend<br />

mit vi öffnen:<br />

cp /etc/php.ini test.txt<br />

vi test.txt<br />

X löscht das aktuell unter <strong>der</strong> Schreibmarke befindliche<br />

Zeichen<br />

: öffnet die <strong>Kommandozeile</strong> von vi zur Eingabe von<br />

Suchbefehlen<br />

:w schreibt die aktuelle Version <strong>der</strong> Datei auf die<br />

Platte<br />

:q! beendet vi, ohne eventuelle Än<strong>der</strong>ungen zu<br />

speichern<br />

:x speichert die Än<strong>der</strong>ungen und beendet v:


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 219<br />

Erster Kontakt mit vi<br />

Sie sehen nun – ähnlich <strong>der</strong> Anzeige von less – den Beginn <strong>der</strong> Datei,<br />

sowie in <strong>der</strong> letzten Zeile <strong>der</strong> Anzeige den Namen des aktuellen Dokuments<br />

und zwei Zahlen. <strong>Die</strong>se geben die Anzahl <strong>der</strong> Zeilen und die<br />

Menge <strong>der</strong> Zeichen im aktuellen Dokument an. <strong>Die</strong> Schreibmarke befindet<br />

sich in <strong>der</strong> linken oberen Ecke <strong>der</strong> Anzeige.<br />

Bild 5.36 Wolf im Schafspelz: Beim ersten Kontakt sieht <strong>der</strong> Texteditor vi recht<br />

harmlos aus.<br />

Um die Schreibmarke zu bewegen, können Sie wie gewohnt die Cursor-<br />

Tasten Ihrer Tastatur verwenden. Blättern nach oben und unten ist kein<br />

Problem: Erreicht die Schreibmarke die vorletzte Anzeigezeile, scrollt <strong>der</strong><br />

Text automatisch nach oben. Ungewöhnlich wird das Verhalten von vi<br />

allerdings, sobald Sie die Schreibmarke in einer Zeile bewegen. Beim<br />

Erreichen des Zeilenendes springt <strong>der</strong> Cursor nicht automatisch in die<br />

nächste Zeile, son<strong>der</strong>n verharrt auf dem letzten Zeichen.<br />

Zur schnellen Navigation innerhalb einer Datei bietet vi zwei Sprungbefehle,<br />

die die Schreibmarke an den Dateianfang o<strong>der</strong> das Dateiende positionieren.<br />

Drücken Sie [ª]+[G], gelangen Sie an das Ende des Texts. An den<br />

Beginn <strong>der</strong> Datei springen Sie durch zweimaliges Drücken <strong>der</strong> Taste [G].


220 Kapitel 5<br />

Bild 5.37 Nichts geht mehr: Bei vi bleibt <strong>der</strong> Cursor am Ende <strong>der</strong> Zeile »hängen« und<br />

springt nicht automatisch in die nächste Zeile.<br />

Gehen Sie nun daran, Än<strong>der</strong>ungen am Text vorzunehmen. Um eine<br />

beliebige Zeile zu löschen, drücken Sie einfach zweimal auf die Taste [D].<br />

Um ein einzelnes Zeichen zu löschen, betätigen Sie eine <strong>der</strong> Tasten [X]<br />

und [Entf]. Eine raffinierte Funktion ist das Überschreiben eines einzelnen<br />

Zeichens. Dazu positionieren Sie die Schreibmarke auf dem zu<br />

än<strong>der</strong>nden Zeichen und drücken dann [R]. Drücken Sie anschließend<br />

eine beliebige Taste und das Zeichen unter <strong>der</strong> Schreibmarke wird<br />

ersetzt. Wollen Sie längere Texte überschreiben, drücken Sie [ª]+[R].<br />

Damit gelangen Sie in den Überschreiben-Modus und können beliebige<br />

Texte eintippen, die den vorhandenen Text überschreiben. Um den<br />

Überschreiben-Modus zu verlassen, drücken sie die Taste [Esc].<br />

Ähnlich leicht ist <strong>der</strong> Aufruf des Einfüge-Modus. Hierzu drücken Sie einfach<br />

die Taste [I]. <strong>Die</strong> Zeichen, die Sie ab diesem Moment tippen, werden<br />

an <strong>der</strong> aktuellen Position <strong>der</strong> Schreibmarke in die Datei eingefügt.<br />

Das Verlassen des Einfüge-Modus geschieht wie beim Überschreiben<br />

mithilfe <strong>der</strong> Taste [Esc].


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 221<br />

Speichern o<strong>der</strong> Abbrechen<br />

Um die an <strong>der</strong> Datei vorgenommenen Än<strong>der</strong>ungen zu speichern, müssen<br />

Sie sich zuerst im per [Esc] erreichbaren Kommandomodus befinden.<br />

Jetzt können Sie mithilfe des Doppelpunkts eine Befehlszeile abrufen, in<br />

<strong>der</strong> Ihnen einige Kurzkommandos zur Verfügung stehen.<br />

Durch die Eingabe von :q verlassen Sie die Datei – allerdings nur, wenn<br />

Sie bislang keine Än<strong>der</strong>ungen vorgenommen haben. An<strong>der</strong>enfalls warnt<br />

vi, dass seit dem letzten Schreibvorgang noch Än<strong>der</strong>ungen vorgenommen<br />

wurden, und kehrt in den Kommandomodus zurück.<br />

Wollen Sie die Än<strong>der</strong>ungen nicht übernehmen, hilft das Kommando :q!<br />

weiter. Es bewirkt, dass vi die noch anstehenden Än<strong>der</strong>ungen verwirft<br />

und sich beendet, ohne die Datei nochmals zu schreiben.<br />

Sollen die Än<strong>der</strong>ungen hingegen übernommen werden, dann geben Sie<br />

das Kommando :w ein. Es bewirkt ein Schreiben des Pufferinhalts von vi<br />

auf die Festplatte.<br />

Wenn Sie die Än<strong>der</strong>ungen nicht nur speichern, son<strong>der</strong>n den Editor<br />

anschließend auch gleich verlassen wollen, können Sie die Kommandos<br />

:w und :q nacheinan<strong>der</strong> verwenden. Schneller geht es aber mit dem Befehl<br />

:x, <strong>der</strong> beide Aktionen automatisch durchführt.<br />

Bild 5.38 Sind noch Än<strong>der</strong>ungen zu speichern, verweigert vi den einfachen Ausstieg.


222 Kapitel 5<br />

Suchen und Ersetzen<br />

Eine <strong>der</strong> am häufigsten genutzten Funktionen von Texteditoren ist das<br />

Suchen und Ersetzen von Wörtern o<strong>der</strong> ganzen Passagen. Auch vi hat<br />

entsprechende Funktionen. <strong>Die</strong>se sind allerdings nicht ganz so einfach zu<br />

benutzen, wie Sie das möglicherweise gewöhnt sind.<br />

Um die Suche nach einer Zeichenkette durchzuführen, müssen Sie bei vi<br />

eine ähnliche Syntax nutzen, wie Sie sie bereits bei less kennen gelernt<br />

haben. Zuerst wechseln Sie mithilfe des Doppelpunkts in den Kommandomodus<br />

und geben dort einen Vorwärts-Schrägstrich (Slash) ein, gefolgt<br />

vom zu suchenden Text.<br />

<strong>Die</strong> Suche erfolgt nun ab <strong>der</strong> Position, an <strong>der</strong> sich die Schreibmarke im<br />

Text befand, als die Suchfunktion aufgerufen wurde. Findet vi ein Vorkommen<br />

des Suchtexts, wird die Schreibmarke auf dem ersten Zeichen<br />

<strong>der</strong> Fundstelle positioniert.<br />

Bild 5.39 Gefunden: <strong>Die</strong> Schreibmarke wird auf dem ersten<br />

Zeichen des Suchtexts positioniert.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 223<br />

Um zur nächsten Fundstelle zu gelangen, drücken Sie wie bei less die<br />

Taste [N]. Zur vorhergehenden Fundstelle gelangen Sie über die Tastenkombination<br />

[ª]+[N] zurück.<br />

Etwas komplizierter als die Suchvorgänge gestaltet sich das Ersetzen von<br />

Zeichenketten. Der dazu notwendige Befehl wird durch das Kurzkommando<br />

s eingeleitet, gefolgt von Such- und Ersetzungstext, die mithilfe<br />

von Slashes getrennt werden. Um beispielsweise in <strong>der</strong> Zeichenkette PHP<br />

durch Perl zu ersetzen, dient folgendes Kommando:<br />

:s/PHP/PHO/<br />

In dieser Form nützt das allerdings noch nicht viel, da dieses Kommando<br />

die Ersetzung lediglich für das erste Auftreten <strong>der</strong> Zeichenkette PHP in<br />

<strong>der</strong> Zeile vornimmt, in <strong>der</strong> sich die Schreibmarke gerade befindet, aber<br />

keineswegs für alle Fundstellen. Noch nicht einmal ein mehrfaches Auftreten<br />

des Suchbegriffs in <strong>der</strong> Zeile wird berücksichtigt. Um die Ersetzung<br />

im gesamten Text durchzuführen, muss <strong>der</strong> Befehl wie folgt lauten:<br />

:1,$:s/PHP/PHO/g<br />

<strong>Die</strong>ses Kommando heißt für vi in etwa: Vom Anfang bis zum Ende <strong>der</strong><br />

Datei (1,$:) ist eine Suche durchzuführen (s), wobei das Wort PHP durch<br />

PHO zu ersetzen ist (/PHP/PHO/), auch wenn es mehrfach in einer Zeile<br />

auftritt (g).


224 Kapitel 5<br />

Bild 5.40 Nicht einfach, aber machbar: Suchen und Ersetzen von Zeichenketten mit vi.<br />

mc: Der Norton-Comman<strong>der</strong>-Clone<br />

Syntax<br />

Grundform: mc<br />

Wichtige Tasten: [ÿ] wechselt das aktive Verzeichnisfenster<br />

[F3] öffnet den Dateibetrachter<br />

[F4] startet den Texteditor<br />

[F5] kopiert die aktuell markierte Datei<br />

[F6] verschiebt die aktuell markierte Datei<br />

[F7] legt ein Verzeichnis an<br />

[F8] löscht eine Datei o<strong>der</strong> ein Verzeichnis<br />

[F10] beendet den Midnight Comman<strong>der</strong><br />

Zu Zeiten von MS-DOS war <strong>der</strong> Norton Comman<strong>der</strong> eines <strong>der</strong> beliebtesten<br />

Werkzeuge, da er nicht nur das einfache Navigieren zwischen Verzeichnissen<br />

erlaubte, son<strong>der</strong>n in ihm auch die wichtigsten Funktionen zur<br />

Arbeit mit Dateien und Verzeichnissen integriert waren.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 225<br />

Sein Nachfolger unter Linux ist <strong>der</strong> Midnight Comman<strong>der</strong>, kurz mc. Er<br />

bietet dieselben Funktionen wie sein DOS-Pendant. Das wichtigste seiner<br />

Features ist die gleichzeitige Anzeige zweier Verzeichnisse. Zwischen<br />

diesen lassen sich Dateien mit wenigen Tastendrücken kopieren und verschieben.<br />

Darüber hinaus bietet <strong>der</strong> Midnight Comman<strong>der</strong> einen integrierten<br />

Textdateibetrachter sowie einen Texteditor. Selbst das Anlegen<br />

von Verzeichnissen und das Löschen von Dateien und Verzeichnissen<br />

lässt sich mit seiner Hilfe komfortabel erledigen.<br />

Bild 5.41 Komfortabel durch das Dateisystem von Linux:<br />

Der Midnight Comman<strong>der</strong> macht's möglich.


226 Kapitel 5<br />

screen: Mehrere Befehlszeilen in einer Sitzung verwalten<br />

Syntax<br />

Grundform: screen [Optionen]<br />

Wichtige Optionen: -S erzeugt einen virtuellen Arbeitsbereich mit<br />

dem Namen <br />

-r ruft den virtuellen Arbeitsbereich mit dem<br />

Namen auf<br />

-d erzwingt eine Freigabe eines durch einen<br />

an<strong>der</strong>en Anwen<strong>der</strong> o<strong>der</strong> einen toten Task<br />

belegten Arbeitsbereichs<br />

-d -m startet den Arbeitsbereich im Hintergrund,<br />

kehrt also sofort zur aufrufenden <strong>Kommandozeile</strong><br />

zurück<br />

-list gibt eine Liste <strong>der</strong> aktiven Arbeitsbereiche des<br />

aktuellen Benutzers aus<br />

Wichtige Tastaturbefehle:<br />

[Strg]+[A]+[D] kehrt auf die Haupt-<strong>Kommandozeile</strong><br />

zurück<br />

[Strg]+[A]+[K] erzwingt das Beenden des aktuelle<br />

Arbeitsbereichs<br />

Bei <strong>der</strong> Arbeit auf <strong>der</strong> <strong>Kommandozeile</strong> Ihres HighEnd-Servers werden<br />

Sie schnell feststellen, dass eine SSH-Sitzung oft nicht ausreicht. Allerdings<br />

erhöhen viele geöffnete Fenster auf dem lokalen Desktop nicht<br />

gerade die Übersicht. Abhilfe schafft das Utility screen. Mit seiner Hilfe<br />

richten Sie mehrere virtuelle Arbeitsbereiche auf dem HighEnd-Server<br />

ein, die Sie über eine einzige SSH-Sitzung verwalten.<br />

Der Aufruf ist denkbar einfach: Mit screen -S test richten Sie beispielsweise<br />

einen neuen Arbeitsbereich mit dem Namen test ein. Dabei schaltet screen<br />

gleich in den neuen Arbeitsbereich um. Hier können Sie wie auf einer normalen<br />

<strong>Kommandozeile</strong> arbeiten. Um wie<strong>der</strong> zur Hauptsitzung zurückzukehren,<br />

drücken Sie die Tastenkombination [Strg]+[A] und anschließend<br />

die Taste [D].<br />

Um den Arbeitsbereich anzulegen, ihn aber für eine spätere Nutzung<br />

zunächst im Hintergrund zu verstecken, verwenden Sie die leicht abgewandelte<br />

Form screen -S test -d -m. Bei dieser Variante bleiben Sie in <strong>der</strong>


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 227<br />

Hauptsitzung, während <strong>der</strong> von screen erzeugte Arbeitsbereich im Hintergrund<br />

auf seinen Einsatz wartet.<br />

Eine Liste <strong>der</strong> aktuell von Ihnen angelegten Arbeitsbereiche erhalten Sie<br />

mit dem Kommando screen -list. Es werden alle Arbeitsbereiche angezeigt,<br />

die von Ihrem Benutzerkonto angelegt wurden. Es ist nicht möglich, von<br />

an<strong>der</strong>en Benutzern erzeugte Arbeitsbereiche abzurufen.<br />

Einen Arbeitsbereich zu schließen, ist ebenfalls einfach: Rufen Sie den zu<br />

beendenden Arbeitsbereich mittels screen -r auf. Beenden Sie alle im<br />

Arbeitsbereich eventuell laufenden Anwendungen. Über das Kommando<br />

exit verlassen Sie den Arbeitsbereich und schließen ihn gleichzeitig. Sollte<br />

diese Variante einmal nicht funktionieren, können Sie einen Arbeitsbereich<br />

auch zwangsweise beenden. Auch dazu wechseln Sie zuerst zum<br />

betroffenen Arbeitsbereich und drücken dort die Tastenkombination<br />

[Strg]+[A], gefolgt von <strong>der</strong> Taste [K].<br />

Bild 5.42 Mit virtuellen Arbeitsflächen lassen sich viele Aufgaben erledigen, ohne<br />

dass mehrere SSH-Verbindungen zum HighEnd-Server nötig sind.<br />

wget: Dateitransfer auf <strong>der</strong> <strong>Kommandozeile</strong><br />

Syntax<br />

Grundform: wget [Optionen] <br />

Spezielle Optionen: --referer=url erlaubt die Angabe eines Referrers für<br />

Seiten, die eigentlich keine direkten<br />

Downloads erlauben


228 Kapitel 5<br />

Gerade zur Installation von Web-Log, Content Management System<br />

o<strong>der</strong> an<strong>der</strong>er zum Ablauf auf dem HighEnd-Server bestimmter Software<br />

ist es unerlässlich, diese zunächst auf den Server zu übertragen. Dazu<br />

kann man entwe<strong>der</strong> den Umweg über den heimischen Rechner nehmen<br />

o<strong>der</strong> aber den Download gleich direkt auf dem Server durchführen. Das<br />

Werkzeug dazu ist bereits installiert und hört auf den Namen wget.<br />

Mit wget lassen sich sowohl Downloads von Web-Servern per HTTP wie<br />

auch <strong>der</strong> Zugriff auf per FTP erreichbare Dateien durchführen. Dazu ist<br />

lediglich die jeweilige URL <strong>der</strong> gewünschten Datei als Parameter anzugeben.<br />

<strong>Die</strong>s funktioniert auch für Download-Umleiter, die nicht direkt auf<br />

eine Datei verweisen, son<strong>der</strong>n beispielsweise eine zwischengeschaltete<br />

PHP-Datei verwenden.<br />

Dabei müssen Sie allerdings darauf achten, alle Son<strong>der</strong>zeichen wie das so<br />

genannte Kaufmanns-Und (»&«) durch einen vorangestellten Backslash<br />

(»\«) für Linux aufzubereiten. Normalerweise interpretiert Linux dieses<br />

Zeichen nämlich als Anweisung, das vorangehende Kommando im Hintergrund<br />

auszuführen.<br />

Bild 5.43 Mit wget übertragen Sie Dateien direkt von Web- o<strong>der</strong> FTP-Servern auf<br />

Ihren HighEnd-Server.<br />

Ein Son<strong>der</strong>fall sind Web-Angebote, die einen Download nur dann gestatten,<br />

wenn dieser über einen Besuch <strong>der</strong> zugehörigen Web-Seite erfolgt.<br />

Um dies zu umgehen, bietet wget die Option --referer an, über die Sie den<br />

Namen <strong>der</strong> betreffenden Web-Seite als Referrer übergeben können.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 229<br />

5.7 Archive entpacken und selbst erstellen<br />

Auch unter Linux sind Archive das Mittel <strong>der</strong> Wahl, wenn es darum geht,<br />

große Datenmengen kompakt zu sichern o<strong>der</strong> zu übertragen. Genau wie<br />

unter Windows existieren unter Linux mehrere Archiv-Formate und<br />

selbst für die für Windows-Anwen<strong>der</strong> gewohnten Archiv-Typen .zip und<br />

.rar gibt es zumindest Entpack-Programme. Wie Sie diese und das Standard-Archivprogramm<br />

tar einsetzen, erfahren Sie in diesem Abschnitt des<br />

Buchs.<br />

tar: Das Universal-Archivprogramm<br />

Syntax<br />

Grundform: tar [Optionen] [Quelldaten]<br />

Wichtige Optionen: c gibt an, dass ein Archiv erstellt werden soll<br />

x gibt an, dass ein Archiv zu entpacken ist<br />

f gibt die Datei an, auf die eine gewünschte<br />

Operation angewendet werden soll<br />

j gibt an, dass das Archiv mit dem bzip2-Verfahren<br />

ge- o<strong>der</strong> entpackt werden soll<br />

z gibt an, dass das Verfahren mit dem gzip-<br />

Verfahren ge- o<strong>der</strong> entpackt werden soll<br />

v aktiviert die Ausgabe von Detailinformationen<br />

Das Standardprogramm zum Erstellen von Archiven unter Linux ist tar.<br />

Sein Name leitet sich ab von »Tape Archive« und wie dieser schon vermuten<br />

lässt, war <strong>der</strong> ursprüngliche Einsatzzweck von tar die Sicherung von<br />

Daten auf Magnetbän<strong>der</strong>n. Eine <strong>der</strong> Beson<strong>der</strong>heiten von tar ist, dass es<br />

selbst keinerlei Komprimierung <strong>der</strong> Ausgangsdaten durchführt. Es dient<br />

lediglich dazu, eine beliebige Anzahl von Dateien und Verzeichnissen in<br />

einer einzigen, großen Datei zusammenzuführen – o<strong>der</strong> aus einer solchen<br />

Datei die Ursprungsdaten wie<strong>der</strong>herzustellen. Mo<strong>der</strong>ne Linux-Distributionen<br />

kommen mit einer deutlich verbesserten Version von tar, die in <strong>der</strong><br />

Lage ist, die zu archivierenden Daten auch über die unter Linux verfügbaren<br />

Packprogramme zu komprimieren.


230 Kapitel 5<br />

Einfache Tar-Archive erstellen<br />

Um erfolgreich ein Archiv mit tar zu erstellen, müssen Sie diesem mindestens<br />

drei Dinge mitteilen. Erstens, dass Sie ein Archiv erstellen wollen.<br />

<strong>Die</strong>s geschieht über die Option c, eine Abkürzung für »Create«. Zweitens,<br />

in welcher Datei das Archiv abgelegt werden soll. Dazu verwenden Sie die<br />

Option f, gefolgt vom gewünschten Archivnamen – beispielsweise test.tar.<br />

Und schließlich müssen Sie tar noch mitteilen, welche Dateien in dem<br />

Archiv gesichert werden sollen. Dazu geben Sie entwe<strong>der</strong> die einzelnen<br />

Dateinamen o<strong>der</strong> den Namen eines Verzeichnisses als weitere Parameter<br />

an.<br />

Das hört sich komplizierter an als es ist. Um zum Beispiel den Inhalt des<br />

Verzeichnisses /var/test/strato in ein Archiv mit dem Namen test.tar zu<br />

packen, geben Sie dieses Kommando ein:<br />

tar cf test.tar /var/test/strato<br />

Beachten Sie, dass in diesem Fall <strong>der</strong> komplette Pfad mit im Archiv hinterlegt<br />

wird. Wenn Sie das Archiv entpacken, wird also die komplette Verzeichnisstruktur<br />

var/test/strato unterhalb des aktuellen Verzeichnisses<br />

angelegt. Wollen Sie, dass nur <strong>der</strong> letzte Teil des Pfads im Archiv gespeichert<br />

wird, dann wechseln Sie in das Verzeichnis /var/test und lassen das<br />

Archiv an <strong>der</strong> gewünschten Stelle erzeugen:<br />

tar cf /home/user/test.tar strato/<br />

Auf diese Weise legen Sie das Archiv <strong>der</strong> im Verzeichnisbaum unterhalb<br />

von strato gespeicherten Daten unter /home/user/test.tar an.<br />

Bild 5.44 Ein reines Archiv ohne Komprimierung <strong>der</strong> Daten ist schnell erzeugt.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 231<br />

Wollen Sie etwas mehr Informationen darüber erhalten, was während <strong>der</strong><br />

Erzeugung des Archivs vor sich geht, erweitern Sie die <strong>Kommandozeile</strong><br />

um die Option v. <strong>Die</strong>ser so genannte Verbode-Modus zeigt während des<br />

Erstellens des Archivs die einzelnen aufgenommenen Dateien und Verzeichnisse<br />

an:<br />

tar cvf /home/user/test.tar strato/<br />

Achten Sie unbedingt darauf, dass die Option f stets an letzter Stelle <strong>der</strong><br />

Optionen stehen muss, da <strong>der</strong> nachfolgende Parameter als Dateiname des<br />

Zielarchivs interpretiert wird.<br />

Gepackte Archive erstellen<br />

Da die Archivierung von Daten im ungepackten Format recht ineffektiv<br />

ist, bieten neuere Versionen von tar die Möglichkeit, die unter Linux üblichen<br />

Packer gzip und bzip2 zu integrieren. <strong>Die</strong>s geschieht über die Optionen<br />

z für gzip und j für bzip2. Ein mit gzip gepacktes Archiv erstellen Sie<br />

beispielsweise so:<br />

tar czf /home/user/test.tar.gz strato/<br />

Sie sollten es sich zur Gewohnheit machen, zusätzlich gepackte Archive<br />

mit einer passenden Dateiendung zu versehen. Linux ist zwar nicht auf<br />

diese angewiesen und auch die jeweiligen Anwendungen benötigen zum<br />

Entpacken <strong>der</strong> Daten die Erweiterung nicht. Es erleichtert aber die Übersicht<br />

und hilft Ihnen, beim Entpacken auf Anhieb die richtigen Optionen<br />

zu verwenden. Bei mit gzip gepackten Archiven sind die Dateinamenserweiterungen<br />

tar.gz o<strong>der</strong> tgz üblich, für mit bzip2 gepackte Archive wird in<br />

<strong>der</strong> Regel tar.bz2 verwendet. Ein mit bzip2 gepacktes Archiv erstellen Sie<br />

mit folgendem Kommando:<br />

tar cjf /home/user/test.tar.bz2 strato/


232 Kapitel 5<br />

Bild 5.45 Deutlich zu sehen: Der Einsatz von Packprogrammen erzeugt kleinere<br />

Dateien, wobei die Resultate von bzip2 besser sind als die von gzip.<br />

Performance-Fresser bzip2<br />

Rein von <strong>der</strong> Packdichte her gesehen leistet bzip2 deutlich bessere Arbeit als das<br />

ältere gzip. Allerdings müssen Sie sich den gesparten Speicherplatz auf <strong>der</strong> Festplatte<br />

mit einem Nachteil erkaufen: bzip2 ist sehr rechenintensiv und reißt während<br />

des Packvorgangs den größten Teil <strong>der</strong> verfügbaren CPU-Leistung an sich.<br />

Das kann zu Performance-Problemen Ihres Web-Angebots führen. Angesichts <strong>der</strong><br />

reichlich bemessenen Kapazität <strong>der</strong> Festplatten in den HighEnd-Servern sollten<br />

Sie daher lieber gzip den Vorzug geben.<br />

Archive entpacken<br />

Das Entpacken von Archiven, die mit tar erstellt wurden, ist dem Packen<br />

recht ähnlich. Es ist jetzt lediglich statt <strong>der</strong> Option c die Option x zu verwenden.<br />

Sie müssen auch das zu verwendende Packprogramm angeben,<br />

da tar dieses nicht selbstständig ermittelt.<br />

Um die erstellten Beispieldateien zu entpacken, lauten die <strong>Befehle</strong> daher:<br />

tar xf /home/user/test.tar<br />

tar xzf /home/user/test.tar.gz<br />

tar xjf /home/user/test.tar.bz2<br />

Bild 5.46 Archive sind genau so leicht entpackt, wie sie erstellt wurden.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 233<br />

unzip: Archiv-Brücke in die Windows-Welt<br />

Syntax<br />

Grundform: unzip [Optionen] <br />

Wichtige Optionen: -d dir legt das Verzeichnis dir an und entpackt die im<br />

Archiv enthaltenen Daten in dieses Verzeichni<br />

-q unterdrückt die Ausgabe <strong>der</strong> Liste <strong>der</strong> entpackten<br />

Dateien auf dem Bildschirm<br />

Gerade die plattformunabhängigen Programmiersprachen wie PHP o<strong>der</strong><br />

Perl führen dazu, dass Tools und Module für Web-Angebote nicht nur<br />

unter Linux, son<strong>der</strong>n auch unter Windows entwickelt werden. Unter<br />

Windows ist .zip das gebräuchlichste Archivformat, weshalb es die meisten<br />

unter diesem Betriebssystem arbeitenden Programmierer verwenden.<br />

Ein mit Zip gepacktes Archiv unter Linux zu entpacken ist dank des<br />

Hilfsprogramms unzip kein Problem. Der Aufruf ist denkbar einfach: Sie<br />

geben lediglich den Namen des zu entpackenden Archivs als Parameter<br />

an. Sollen die entpackten Daten nicht im aktuellen Verzeichnis, son<strong>der</strong>n<br />

an einer an<strong>der</strong>en Stelle abgelegt werden, übergeben Sie zusätzlich die<br />

Option -d, gefolgt vom gewünschten Zielverzeichnis. Existiert dieses Verzeichnis<br />

nicht, legt unzip es automatisch an. Um das Archiv test.zip nach<br />

/home/user/ziptest zu entpacken, verwenden Sie diesen Befehl:<br />

unzip –d /home/user/ziptest test.zip<br />

Während des Entpackens gibt unzip eine Liste <strong>der</strong> dekomprimierten<br />

Dateien auf dem Bildschirm aus. <strong>Die</strong>ses Verhalten können Sie än<strong>der</strong>n,<br />

indem Sie zusätzlich die Option -q an unzip übergeben.


234 Kapitel 5<br />

unrar: Entpacker für RAR-Archive<br />

Syntax<br />

Grundform: unrar [Optionen] <br />

Wichtige Optionen: e entpackt die im Archiv enthaltenen<br />

Daten im aktuellen Verzeichnis<br />

x entpackt die im Archiv enthaltenen<br />

Daten mit dem im Archiv<br />

angegebenen absoluten Pfad<br />

Unter Windows erfreut sich das Packprogramm WinRAR zunehmen<strong>der</strong><br />

Beliebtheit, da es kleinere Archive produziert als WinZip. Auch mit diesem<br />

Programm erstellte Archive lassen sich unter Linux entpacken. Dass<br />

dazu notwendige Utility heißt unrar. Sein Aufruf ist ebenfalls einfach und<br />

beinhaltet zwei Parameter.<br />

Der erste legt fest, ob die im Archiv enthaltenen Daten im aktuellen Verzeichnis<br />

o<strong>der</strong> unter dem im Archiv gespeicherten absoluten Pfad abgelegt<br />

werden. Für ein Entpacken im aktuellen Verzeichnis übergeben Sie die<br />

Option e an das Utility, an<strong>der</strong>enfalls ein x. Der zweite zu übergebende<br />

Parameter ist <strong>der</strong> Name des Archivs, das entpackt werden soll. Um beispielsweise<br />

das im Verzeichnis /home/user abgelegte Archiv test.rar im Verzeichnis<br />

/test zu entpacken, verwenden Sie folgende Kommandos:<br />

cd /test<br />

unrar e /home/user/test.rar<br />

Es kann sein, dass das Entpackprogramm für RAR-Archive noch nicht<br />

auf Ihrem HighEnd-Server installiert ist. In diesem Fall müssen Sie es<br />

zunächst einrichten. Wie Sie dies tun, erfahren Sie in Kapitel 6.<br />

5.8 Tipps und Tricks für die <strong>Kommandozeile</strong><br />

Mit den in diesen Kapiteln erwähnten <strong>Befehle</strong>n und Programmen sind<br />

Sie für die meisten auf <strong>der</strong> <strong>Kommandozeile</strong> zu erledigenden Arbeiten gut<br />

gerüstet. Es gibt aber noch ein paar Drehs und Kniffe, mit denen Sie sich<br />

die Arbeit zusätzlich erleichtern können.


<strong>Die</strong> <strong>Befehle</strong> <strong>der</strong> <strong>Kommandozeile</strong> 235<br />

<strong>Die</strong> Befehlshistorie <strong>der</strong> <strong>Kommandozeile</strong> nutzen<br />

Eine Komfortfunktion des Kommandointerpreters von Linux ist es, sich<br />

die vom Anwen<strong>der</strong> eingegebenen <strong>Befehle</strong> zu merken. <strong>Die</strong> gespeicherten<br />

Anweisungen lassen sich je<strong>der</strong>zeit mithilfe <strong>der</strong> Cursor-Tasten wie<strong>der</strong><br />

abrufen. Drücken Sie einfach auf einer leeren Eingabezeile die Tasten<br />

zum Bewegen <strong>der</strong> Schreibmarke nach oben und unten. Sie blättern durch<br />

die <strong>Befehle</strong>, die Sie im Lauf Ihrer Sitzung mit dem HighEnd-Server eingegeben<br />

haben. Um einen zuvor benutzten Befehl zu wie<strong>der</strong>holen, drücken<br />

Sie einfach die [¢]-Taste, sobald das gewünschte Kommando<br />

angezeigt wird.<br />

Blättern in Bildschirminhalten<br />

Nicht nur für die auf <strong>der</strong> <strong>Kommandozeile</strong> eingegebenen <strong>Befehle</strong>, auch<br />

für die auf dem Bildschirm ausgegebenen Daten legt Linux einen Puffer<br />

an, in dem Sie blättern können. Dazu dienen die Tastenkombinationen<br />

[ª]+ [Bild½] und [ª]+[Bild¼]. Mit Ihrer Hilfe können Sie beispielsweise<br />

die Ausgaben von <strong>Befehle</strong>n wie unzip o<strong>der</strong> ps kontrollieren, die<br />

normalerweise deutlich mehr Daten liefern als auf einem Bildschirm<br />

Platz haben.<br />

Ausgabeumleitung per Redirect<br />

Eine Alternative zum Blättern im Bildschirmpuffer ist es, die Ausgaben<br />

<strong>der</strong> jeweiligen Programme direkt in eine Datei umzuleiten und das Ergebnis<br />

anschließend in Ruhe, beispielsweise mit less, zu betrachten. Das dazu<br />

notwendige Befehlsformat ist recht simpel. Geben Sie einfach hinter dem<br />

eigentlichen Programmaufruf das Zeichen >, gefolgt vom Namen <strong>der</strong><br />

gewünschten Zieldatei an. Zur Umleitung <strong>der</strong> Ausgabe von ps in die Datei<br />

/home/user/ps.out lautet <strong>der</strong> Befehl wie folgt:<br />

ps ax > /home/user/ps.out<br />

Auf ähnliche Weise lassen sich die meisten Programmausgaben in eine<br />

Datei umleiten. Es gibt allerdings Programme, die ihre Ausgaben nicht<br />

über die Standard-Ausgabeleitungen schicken, son<strong>der</strong>n den Bildschirm<br />

direkt adressieren. In diesem Fall gibt es lei<strong>der</strong> keine Möglichkeit, die<br />

Daten in eine Datei umzuleiten.


236 Kapitel 5<br />

Ausgabeumleitung per Pipe<br />

Oft will man die Ausgaben eines Programms gar nicht manuell durchforsten,<br />

son<strong>der</strong>n einem an<strong>der</strong>en Programm zur weiteren Verarbeitung übergeben.<br />

Auch dies lässt sich realisieren, und zwar mit einer Ausgabeumleitung<br />

in eine so genannte »Pipe«. <strong>Die</strong> Syntax ähnelt <strong>der</strong> beim Redirect beschriebenen<br />

mit dem Unterschied, dass statt des Umleitungspfeils nun das Pipe-<br />

Zeichen | zum Einsatz kommt. So lässt sich zum Beispiel die Ausgabe von<br />

ps mithilfe von grep daraufhin überprüfen, ob <strong>der</strong> Web-Server noch läuft.<br />

Dazu ist zu prüfen, ob in <strong>der</strong> Ausgabe von ps die Zeichenkette httpd2 enthalten<br />

ist:<br />

ps ax | grep httpd2<br />

Auch mehrfache Umleitungen sind mit Pipes kein Problem. Wollen Sie<br />

zum Beispiel nicht wissen, ob <strong>der</strong> Web-Server läuft, son<strong>der</strong>n wie viele seiner<br />

Tasks gerade aktiv ist, hilft folgen<strong>der</strong> Befehl:<br />

ps ax | grep httpd2 | wc –l<br />

Der hier aufgeführte Befehl dient übrigens nur zur Demonstration. Sie<br />

erreichen dasselbe Ergebnis schneller über das Kommando ps ax | grep -c<br />

httpd2.<br />

Bild 5.47 Auch mehrfache Ausgabeumleitungen sind mit Pipes kein Problem.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!