5 Die Befehle der Kommandozeile
5 Die Befehle der Kommandozeile
5 Die Befehle der Kommandozeile
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.