Der Befehl time

time-featured

In diesem Beitrag lernen Sie den Befehl time kennen, welcher unter Linux- / UNIX-Betriebssystemen der Messung der Laufzeit von Programmen bzw. Befehlen dient. Der Befehl eignet sich damit etwa zur Messung der Dauer eines Kopiervorgangs.

Es ist zwischen zwei Versionen des time-Befehls zu unterscheiden: Einerseits gibt es time als externes Programm, welches über ein gleichnamiges Paket installiert werden kann. Andererseits bringt die Bash jedoch auch time als Schlüsselwort mit. time als externes Programm bietet deutlich mehr Funktionen als die Bash-Variante, im Kern erfüllen sie jedoch denselben Zweck. Beide Varianten werden in diesem Beitrag behandelt. Der Abschnitt "Wichtige Optionen" wird sich jedoch nur auf den externen Befehl beziehen.

Installation

Der externe Befehl time ist nicht auf allen Systemen bereits vorinstalliert. Die Installation kann daher bei Bedarf mithilfe des folgenden Befehls mit apt nachgeholt werden:

apt-get install time

Allgemeine Syntax

Im Folgenden wird zunächst einmal kurz die Syntax des Bash-Befehls time gezeigt. Es existiert lediglich eine Option -p, welche die Ausgabe der Laufzeit in einem POSIX-kompatiblen Format aktiviert. Als Befehl kann auch eine ganze Pipeline, also mehrere durch Pipes hintereinandergeschaltete Befehle, verwendet werden.

time [Optionen] [Befehl / Pipeline]

Es folgt nun die Syntax des externen Befehls time. Die Angabe einer ganzen Pipeline wird hier nicht ohne Weiteres unterstützt. Nur die Angabe eines einzelnen Befehls wird unterstützt.

time [Optionen] [Befehl]

Soll der externe Befehl in der Bash verwendet werden, so ist eine komplette Pfadangabe notwendig, um einen Konflikt mit dem Bash-Schlüsselwort zu vermeiden:

/usr/bin/time [Optionen] [Befehl]
Beispiel: time (Bash-Befehl) ohne Optionen

Dieses Beispiel zeigt die Verwendung des Bash-Befehls time zur Messung der Laufzeit eines Kopiervorgangs mit cp.
Eingabe:

Der auszuführende Kopierbefehl wird time einfach übergeben.

time cp -R profi-tutorials /tausch

Ausgabe:

In der Ausgabe ist die verstrichene Zeit abzulesen ("real", "user" und "sys").

real 0m0,047s
user 0m0,000s
sys  0m0,024s

Beispiel: time (ext. Befehl) ohne Optionen

Hier wird die Laufzeit desselben Kopierbefehls wie oben gezeigt, jedoch mit dem externen Befehl time, gemessen.
Eingabe:

/usr/bin/time cp -R profi-tutorials /tausch

Ausgabe:

Im Folgenden ist die etwas ausführlichere Ausgabe des externen Befehls time zu sehen.

0.00user 0.01system 0:00.01elapsed 85%CPU (0avgtext+0avgdata 2512maxresident)k
0inputs+2040outputs (0major+148minor)pagefaults 0swaps

Wichtige Optionen (ext. Befehl)

Es folgen die wichtigsten Optionen der externen Variante des Befehls time. In diesem Abschnitt wird bewusst auf die komplette Pfadangabe verzichtet. Gemeint ist jedoch stets der externe Befehl.

-o - Ausgabedatei verwenden

Standardmäßig schreibt time seine Ausgaben in den Standard-Error stderr. Mit der Option -o ist es möglich, die Ausgaben stattdessen in eine Ausgabedatei zu leiten. Der Inhalt der Ausgabedatei wird standardmäßig überschrieben.

time -o [Datei] [Befehl]

-a - Ausgaben anhängen

Bei Verwendung der Option -o kann zusätzlich die Option -a angegeben werden, damit die Ausgaben keine bestehenden Inhalte in der Ausgabedatei überschreiben. Neue Ausgaben werden dann stets am Ende angehängt.

time -a -o [Datei] [Befehl]

-f - Ausgabe formatieren

Die Ausgabe lässt sich mithilfe der Option -f formatieren. Das zu verwendende Format wird der Option dabei in Form einer Zeichenkette übergeben.

time -f [Format] [Befehl]

In der Format-Zeichenkette können verschiedene Sequenzen verwendet werden, die bei der Ausgabe dann durch entsprechende Informationen ersetzt werden. Folgende Sequenzen sind verfügbar:

Sequenz

Ausgabe

%%

Ein Prozentzeichen "%" wird ausgegeben.

%C

Name und Befehlszeilenargumente des gemessenen Befehls.

%D

Durchschnittliche Größe des nicht gemeinsam genutzten Datenbereichs des Prozesses in Kilobytes.

%E

Komplette Laufzeit des Befehls in [hh:]:mm:ss

%F

Anzahl schwerwiegender bzw. I/O-fordernder Pagefehler, die während der Ausführung auftraten.

%I

Anzahl der Dateisystem-Inputs des Prozesses.

%K

Durchschnittliche Gesamt-Arbeitsspeicherlast des Prozesses in Kilobytes.

%M

Maximale Resident Set Size (RSS) des Prozesses während seiner Lebensdauer in Kilobytes.

%O

Anzahl der Dateisystem-Outputs des Prozesses.

%P

Anteil der CPU-Zeit, die dieser Job erhalten hat in Prozent.

%R

Anzahl unerheblicher bzw. wiederherstellbarer Page-Faults. Es handelt sich dabei um Pages, die nicht gültig sind, aber noch nicht von anderen virtuellen Pages beansprucht wurden. Die Daten in der Page sind also noch gültig, jedoch müssen die Systemtabellen aktualisiert werden.

%S

Gesamtzahl der im Auftrag des Prozesses (im Kernel-Mode) genutzten CPU-Sekunden des Systems.

%U

Gesamtzahl der direkt vom Prozess (im User-Mode) genutzten CPU-Sekunden.

%W

Anzahl, wie oft der Prozess aus dem Hauptspeicher ausgelagert wurde.

%X

Durchschnittliche Menge an gemeinsam genutztem Text im Prozess in Kilobytes.

%Z

Page-Größe des Systems in Bytes.

%c

Anzahl, wie oft unfreiwillige Kontextwechsel stattgefunden haben, weil die Zeitscheibe abgelaufen ist.

%e

Verstrichene reale Zeit, die der Prozess benötigt hat, in Sekunden.

%k

Anzahl Signale, die der Prozess erhalten hat.

%p

Durchschnittliche nicht gemeinsame Stack-Größe des Prozesses in Kilobytes.

%r

Anzahl der Socket-Nachrichten, die der Prozess erhalten hat.

%s

Anzahl der Socket-Nachrichten, die der Prozess gesendet hat.

%t

Durchschnittliche Resident Set Size (RSS) des Prozesses in Kilobytes.

%w

Anzahl, wie oft freiwillige Kontextwechsel stattgefunden haben.

%x

Exit-Status des Befehls.

Des Weiteren ist es möglich, mit "\n" eine neue Zeile zu beginnen sowie mit "\t" einen Tabulator und mit "\\" ein Backslash auszugeben.

-p - POSIX-konforme Ausgabe

Wird die Option -p angegeben, so verwendet time die Format-Zeichenkette "real %e\nuser %U\nsys %S", um eine dem POSIX-Standard 1003.2 konforme Ausgabe zu erreichen.

time -p [Befehl]

Entsprechend ist die Option -p äquivalent zur folgenden Anwendung der Option -f:

time -f "real %e\nuser %U\nsys %S" [Befehl]
Beispiel: Option -p

In diesem Beispiel wird die POSIX-konforme Ausgabe mit der Option -p gezeigt.
Eingabe:

time wird der Befehl cp zum Kopieren einer ISO-Datei von einem USB-Stick in ein Home-Verzeichnis übergeben. Die Option -p wird zusätzlich angegeben.

/usr/bin/time -p cp /tausch/debian-10.5.0-amd64-DVD-1.iso /home/hellberg/

Ausgabe:

Die Ausgabe ist erwartungsgemäß formatiert.

real 42.80
user 0.00
sys 10.56

-v - Ausführliche Ausgabe

Bei Angabe der Option -v verwendet time das eingebaute ausführliche Format. Die verfügbaren Informationen werden dabei zeilenweise, jeweils mitsamt einer englischen Beschreibung ihrer Bedeutung, ausgegeben.

time -v [Befehl]
Beispiel: Option -v

Die ausführliche Ausgabe mit der Option -v wird in diesem Beispiel gezeigt.
Eingabe:

Es wird die Laufzeit des Befehls shred zum sicheren Löschen einer Datei gemessen.

time -v shred /home/hellberg/debian-10.5.0-amd64-DVD-1.iso

Ausgabe:

In der Ausgabe finden sich viele Informationen, die jeweils auch mit einem kurzen beschreibenden Text versehen sind.

befehl-time-beispiel-1

Abonniere JETZT unseren Newsletter!


Verpasse nie wieder neue Beiträge und exklusive Insider-Only-Inhalte!

Joel Benseler

Click Here to Leave a Comment Below

Leave a Comment: