Garten Eden

#linux #programming #android #online #stuff

Jedem seine Zeit – Das tückische time (Unix)

Hä? Obwohl die man-page vom Unix-Befehl time eindeutig Optionen anzeigt, wie z. B. das Schreiben der Ausgabe in eine Datei, funktionieren die dort beschriebenen Argumente nicht. Ein Beispiel:

$ time -o "log" sleep 2
-o: Befehl nicht gefunden

real	0m0.710s
user	0m0.220s
sys	0m0.060s

Wie gesagt, -a und -o müssten möglich sein. Ich habe es dann letztendlich mit Pipes versucht, aber das war auch nicht die Lösung. Für mein aktuelles Projekt – und den kommenden Artikel – benötige ich die Funktion aber. Also an die Arbeit.

bash war’s!

Nach ein wenig Recherche findet man dann heraus, dass das Eingeben des Befehls time in einer Bourne-Shell nicht das Programm /usr/bin/time startet. Die Version in der Shell ist dabei ohne Argumentannahme kompiliert, die im Verzeichnis liegende mit diesen Optionen.

Startet man also explizit die Version aus dem genannten Verzeichnis, funktioniert time nun auch so, wie man es erwartet. Die Ausgabe sieht auch anders aus; nicht so schön formatiert. Zuerst der Test ohne Optionen:

$ /usr/bin/time sleep 2
0.00user 0.00system 0:02.00elapsed 0%CPU (0avgtext+0avgdata 2480maxresident)k
0inputs+0outputs (0major+203minor)pagefaults 0swaps

Zeitlos schön

Funktioniert also. Um das ganze auch noch etwas zu verschönern, machen wir uns die (nun möglichen) Optionen zu nutze und wählen die Ausgabe, die für uns brauchbar ist. Für mich ist das im Moment der übergebene Konsolenbefehl (%C) und die Real-Laufzeit desselben (%e), getrennt von einem Tab ( ). Gleichzeitig möchte ich die Ausgabe jetzt nicht in die Standardausgabe stdout, sondern in eine Datei "log" leiten, die nicht überschrieben, sondern ergänzt wird.

$ /usr/bin/time -a -o "log" -f "%C	%e" sleep 2; cat log
sleep 2   2.00

Der Befehl cat liest danach sofort die erzeugte Datei und siehe da: Endlich haben wir die gewünschte Ausgabe im richtigen Format, in der richtigen Datei.

Kommentare

Dein Kommentar:






Bisher...

...keine Kommentare.

de

Moment, lade ältere Artikel...

E-Mail (nicht öffentlich)

Homepage (optional)

Kommentar... (code-Tag erlaubt)