Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Shell<br />
Tipps & Tricks<br />
nach allen Dateien durchsucht<br />
<strong>und</strong> diese in eine Datenbank<br />
schreibt. Auf diese Informationen<br />
greift das locate-Kommando zu,<br />
mit dem Sie nach Dateinamen suchen<br />
– das geht in der Regel viel<br />
schneller als die Suche mit find.<br />
Um nun die Ausführungszeit des<br />
updatedb-Kommandos zu messen,<br />
stellen Sie dem Befehl einen<br />
time-Aufruf voran:<br />
# time updatedb<br />
real 0m0.406s<br />
user 0m0.212s<br />
sys 0m0.192s<br />
(Das Programm updatedb benötigt<br />
Root-Rechte, erkennbar am<br />
#-Prompt.) Die Ausgabe von time<br />
im Terminalfenster verrät Ihnen Folgendes:<br />
Hinter real steht die gesamte Ausführungszeit,<br />
hinter user die Zeit, in der die CPU tatsächlich<br />
den (Benutzer-)Code des Programms ausführt,<br />
<strong>und</strong> hinter sys die Zeit, in der die CPU<br />
mit Ausführung von Kernel-Code für die Anwendung<br />
beschäftigt ist.<br />
Kommt Ihnen die Performance Ihres Rechners<br />
also etwas schwach vor, ermitteln Sie doch<br />
einfach mal, wie viel Zeit er für eine bestimmte<br />
Aufgabe wirklich braucht. Um Vergleichswerte<br />
von anderen Computern zu erhalten,<br />
können Sie einfach auf den <strong>EasyLinux</strong>-<br />
Mailinglisten [2] jemand bitten, mit time<br />
nachzumessen. Der updatedb-Befehl ist für einen<br />
solchen Vergleich allerdings kein gutes<br />
Beispiel, weil in der Regel jeder Rechner unterschiedlich<br />
viele Dateien enthält.<br />
abb. 1: „units“ ist ein praktischer Taschenrechner für die konsole,<br />
der in Windeseile viele Einheiten umwandelt.<br />
Dateien mit Wget<br />
65<br />
herunterladen<br />
Dieses kleine Programm lädt Dateien von einem<br />
WWW- oder FTP-Server auf den eigenen<br />
Computer herunter. Schon beim Aufruf definieren<br />
Sie, ob Sie eine einzelne Datei oder<br />
gleich eine ganze Verzeichnisstruktur aus<br />
dem Netz ziehen. Um beispielsweise das Titelbild<br />
der letzten <strong>EasyLinux</strong>-Ausgabe zu holen,<br />
tippen Sie einfach den Befehl gefolgt von<br />
der URL (siehe Listing 1).<br />
Wget zeigt im Terminal an, was im Hintergr<strong>und</strong><br />
passiert. Im Listing baut das Tool eine<br />
Verbindung zum Webserver auf, erhält von<br />
diesem eine positive Antwort <strong>und</strong> berichtet<br />
dann, wie groß die Datei ist <strong>und</strong> unter welchem<br />
Namen es diese speichert. Während<br />
des Downloads sehen Sie eine Art Fortschrittsbalken<br />
<strong>und</strong> wissen daher genau Bescheid,<br />
wie weit Wget gekommen ist. Eine<br />
abschließende Meldung bestätigt, mit welcher<br />
Durchschnittsgeschwindigkeit die Datei<br />
auf der Platte gelandet ist.<br />
Mit Wget einen ganzen Server<br />
66<br />
rekursiv spiegeln<br />
Wenn Sie den vorigen Tipp gelesen haben,<br />
wissen Sie, was Wget tut <strong>und</strong> wie die Arbeit<br />
damit gr<strong>und</strong>sätzlich funktioniert. Jetzt werden<br />
Sie sicher zurecht sagen: Einfach eine<br />
Grafik aus dem Netz holen, das mach ich per<br />
Webbrowser schneller <strong>und</strong> komfortabler über<br />
Grafik speichern unter. Stimmt – aber außer<br />
dieser rudimentären Funktionsweise hat Wget<br />
noch allerhand mehr auf dem Kasten <strong>und</strong> hilft<br />
beispielsweise dabei, einen kompletten Spiegel<br />
einer Webseite mit all ihren Unterverzeichnissen<br />
anzulegen.<br />
Dazu rufen Sie wget ‐r (rekursiv) zusammen<br />
mit der URL auf. Vorsicht: Das Tool räumt<br />
nun bis in den letzten Winkel ab; für einen<br />
Testlauf ist es daher sinnvoll, zunächst den<br />
Level der Rekursion mit anzugeben. Dazu<br />
nehmen Sie die Aufrufoption ‐l (level) zu Hilfe<br />
<strong>und</strong> setzen beispielsweise die 1, um neben index.html<br />
alle dort eingebetteten Links (wie<br />
z. B. Bilder oder weitere HTML-<br />
Seiten) zu erwischen:<br />
wget ‐r ‐l 1 www.easyliU<br />
nux.de<br />
Alternativ definieren Sie die Leveltiefe<br />
‐l 2, <strong>und</strong> Wget folgt den<br />
eingebetteten Links noch eine<br />
weitere Stufe. Auf der eigenen<br />
Platte sehen Sie nun das neue<br />
Verzeichnis www.easylinux.de<br />
<strong>und</strong> darin die heruntergeladenen<br />
Dateien. Für jede Webseite legt<br />
Wget einen eigenen Ordner an.<br />
Um alles direkt ins aktuelle Verzeichnis<br />
zu spiegeln, geben Sie<br />
zusätzlich ‐nH („no host“) an.<br />
Arbeiten Sie ohne Level-Angabe<br />
(‐l ...), gibt es noch einen anderen<br />
Weg, die Downloadmenge zu begrenzen:<br />
Über die Option ‐np (no parent) verhindern<br />
Sie, dass Wget Dateien zieht, die sich auf dem<br />
Webserver „weiter oben“ in der Verzeichnishierarchie<br />
befinden. So ziehen Sie z. B. mit<br />
wget ‐r ‐np http://www.easylinuxU<br />
.de/ausgabe/2009<br />
alle Dateien, die auf dem Server unterhalb<br />
von /ausgabe/ 2009/ liegen (<strong>und</strong> über Links<br />
erreichbar sind); die Links, die auf die Startseite<br />
<strong>und</strong> damit auf den gesamten Webseiteninhalt<br />
zurückverweisen, ignoriert Wget dann.<br />
Wget: Abgebrochenen<br />
67<br />
Download fortsetzen<br />
Der praktische Downloadmanager für die<br />
Shell hat noch ein weiteres tolles Feature im<br />
Gepäck. Über die Option ‐c („continue“ =<br />
„fortsetzen“) setzen Sie einen unterbrochenen<br />
Downloadvorgang fort. Da Wget dazu die<br />
Teile auf Ihrer Festplatte mit dem Original<br />
vergleicht <strong>und</strong> dann einfach anknüpft, spielt<br />
es keine Rolle, ob Sie die Fragmente mit Wget<br />
oder einem anderen Programm heruntergela-<br />
LisTing 1: EinfachEr wget-aufruf<br />
$ wget http://www.easylinux.de/2011/01/title_2011_01.png<br />
‐‐2011‐02‐11 17:38:24‐‐<br />
...<br />
Resolving www.easylinux.de... 80.237.227.187<br />
Connecting to www.easylinux.de|80.237.227.187|:80... connected.<br />
HTTP request sent, awaiting response... 200 OK<br />
Length: 726243 (709K) [image/png]<br />
Saving to: `title_2011_01.png‘<br />
10% [=======> ] 168,323,560 28.6M/s<br />
...<br />
2011‐02‐11 17:38:24 (3.19 MB/s) ‐ `title_2011_01.png‘ saved [726243/726243]<br />
<strong>EasyLinux</strong><br />
02/2011<br />
www.easylinux.de<br />
105