GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie den Linux-Zeitbefehl:Alles, was Sie wissen müssen

Ob Sie ein Systemadministrator oder ein Benutzer eines virtuellen privaten Servers (VPS) sind, das Erlernen verschiedener Linux-Befehle hilft Ihnen dabei, Aufgaben effizienter auszuführen.

In diesem Tutorial lernen Sie den Linux-Zeitbefehl kennen – was er ist, welchen Zweck er hat und wie er verwendet wird.

Was ist ein Linux-Zeitbefehl?

Mit dem time-Befehl in Linux- und Unix-ähnlichen Betriebssystemen können Sie bestimmen, wie lange die Ausführung eines bestimmten Befehls dauert. Normalerweise wird es verwendet, um die Leistung von Skripten oder Befehlen zu messen. Je schneller ein Befehl seine Aufgabe beendet, desto besser ist seine Leistung.

Darüber hinaus kann der time-Befehl auch die Systemressourcennutzung des Prozesses anzeigen, was ihn zu einem hilfreichen Werkzeug zur Überprüfung der Effizienz eines bestimmten Befehls macht.

Sie möchten beispielsweise zwischen zwei Cronjobs wählen, die dieselbe Aufgabe ausführen können. Sie können bestimmen, wie lange jeder Cron-Job benötigt, um die Aufgaben abzuschließen, indem Sie den Befehl time ausführen.

Bevor wir jedoch beginnen, über die Verwendung des Linux-Time-Befehls zu sprechen, denken Sie daran, dass er je nach verwendeter Shell unterschiedlich ist. Es gibt drei verschiedene Versionen des time-Befehls im Linux-System:

  • Bash – bereits in die Shell eingebaut und kann durch Eingabe von time ausgeführt werden .
  • Zsh wie Bash ist es auch bereits in das System integriert und wird durch Eingabe von time ausgeführt .
  • GNU-Standard-Linux (GNU) verfügbar, indem Sie den expliziten Pfad zum Befehl eingeben, usr/bin/time .

Um zu prüfen, welche Version des Linux-Zeitbefehls für Ihr System gilt, geben Sie Folgendes in Ihr Shell-Programm ein:

$ type time
  • Wenn Sie die Ausgabe erhalten,ist time ein Shell-Schlüsselwort verwenden Sie den Bash-Zeitbefehl.
  • Wenn Sie die Ausgabe Zeit ist ein reserviertes Wort erhalten verwenden Sie den Zeitbefehl Zsh.
  • Wenn Sie die Ausgabe time is usr/bin/time erhalten verwenden Sie den GNU-Zeitbefehl.

Alternativ können Sie den GNU-Time-Befehl unter Linux vereinfachen, indem Sie einen Alias-Befehl für usr/bin/time.

erstellen

Verwenden des Time-Befehls in Linux

In diesem Abschnitt lernen Sie die Syntax des Linux-Befehls time und wie Sie seine Ausgabe lesen.

Die Syntax des Linux-Time-Befehls kennenlernen

Die Verwendung des time-Befehls ist sehr einfach – Sie müssen lediglich Ihr Shell-Programm öffnen und Folgendes eingeben:

$ time [command]

Um den Zeitbefehl voll nutzen zu können, müssen Sie seine Syntax verstehen:

$ time [command] [arg1] [arg2] ... [argN]
time [options] [command] [arg1] [arg2] ... [argN]

Zeit führt den angegebenen Befehl aus mit gegebenen Argumenten (arg ). Sobald der Befehl seine Aufgabe beendet hat, gibt time Informationen aus, die die Dauer der Ausführung des Befehls und die von ihm verwendeten Ressourcen enthalten.

Wenn der Programmbefehl mit einem Nicht-Null-Status beendet wird, der einen Fehler anzeigt, gibt time eine Warnmeldung und den Beendigungsstatus aus.

Durch Eingabe des vom Befehl verwendeten Zeichenfolgenformats können Sie bestimmen, welche Informationen im Abschnitt Systemressourcennutzung angezeigt werden sollen.

Wenn der Benutzer kein Format angibt, aber die Zeitumgebungsvariable gesetzt ist, wird ihr Wert als Format verwendet. Andernfalls wird das in die Uhrzeit integrierte Standardformat verwendet.

Optionen sind Ressourcenbezeichner, die die Zeitausgabe ändern. Sie müssen vor dem Befehl stehen. Alles, was nach dem Befehl eingegeben wird, wird als Argument betrachtet.

Um alle Optionen anzuzeigen, die Sie für die Zeit verwenden können, geben Sie Folgendes in die Befehlszeile ein:

$ man time

Sie sehen eine Liste mit Optionen, mit denen Sie die Ausgabe des Linux-Zeitbefehls ändern können. Beachten Sie jedoch, dass diese Optionen je nach Betriebssystem und verwendeter Version variieren können.

Beginnen wir mit einem einfachen ersten Beispiel. Um herauszufinden, wie lange es dauert, den Befehl ls auszuführen verwendet, um den Inhalt eines ausgewählten Verzeichnisses anzuzeigen, geben Sie Folgendes in die Shell ein:

$ time ls

Sie sehen die Ausgabe des ls-Befehls und die Zeit, die es gedauert hat, ihn abzuschließen.

Lassen Sie uns nun versuchen, ein Argument einzubauen. In diesem Beispiel versuchen wir herauszufinden, wie lange es dauert, eine Datei in ein anderes Verzeichnis zu verschieben:

$ time mv example.txt example-dir

Als Ergebnis wird die example.txt Datei wurde nach example-dir verschoben , und Sie sehen die Zeit, die zum Abschluss des Vorgangs benötigt wird.

Die Ausgabe verstehen

Um die Vorteile des Linux-Time-Befehls vollständig zu verstehen, müssen Sie wissen, wie man seine Ausgabe liest.

Lesen der Ausgabe im Terminal

Die Standardausgabe des eingebauten Zeitbefehls enthält die folgenden Informationen:

  • Echtzeit (real). Die reale Zeit, die der Prozess benötigt, um von Anfang bis Ende ausgeführt zu werden. Dies umfasst die Zeit, die andere Prozesse in Anspruch nehmen, und die Zeit, die damit verbracht wird, auf deren Abschluss zu warten.
  • Benutzerzeit (Benutzer). Die Menge an CPU-Zeit, die während des Prozesses im Benutzermodus verbracht wird. Andere Prozesse und blockierte Zeiten sind nicht enthalten.
  • Systemzeit (sys). Die gesamte CPU-Zeit, die während des Prozesses im Kernelmodus verbracht wurde. Ähnlich wie die Benutzerzeit werden andere Prozesse und die von anderen Prozessen blockierte Zeit nicht gezählt.

Hier ist ein Beispiel. Wenn wir den folgenden Befehl in die Befehlszeile eingeben, lädt das System das Installationsprogramm für das Open-Source-Programm für virtuelle Maschinen VirtualBox herunter:

$ time wget https://download.virtualbox.org/virtualbox/6.1.28/virtualbox-6.1_6.1.28-147628~Ubuntu~eoan_amd64.deb

Nachdem der Download abgeschlossen ist, sehen Sie drei Zahlen – echt , Benutzer und sys . Wie Sie sehen können, zeigen sie die verstrichene Zeit im Real-, Benutzer- und Systemmodus während des Downloads in Minuten und Sekunden an.

Ausgabe in eine Datei schreiben

Manchmal möchten Sie die Informationen, die Sie mit der Zeit erhalten haben, speichern. Glücklicherweise gibt es eine Formatoption, mit der Sie die Befehlsausgabe in eine Datei schreiben können.

Wenn Sie den GNU-Zeitbefehl verwenden, wird das -o Mit der Option können Sie genau das tun – sie erstellt eine neue Ausgabedatei, die Informationen über den anderen Befehl enthält.

Geben Sie beispielsweise den folgenden Befehl ein, um die Ping-Informationen von hostinger.com zu speichern und Details über seinen Prozess in eine neue Datei:

$ time -o hostinger-ping-info.log ping hostinger.com

Beachten Sie, dass Sie, wenn Sie die Bash-Shell verwenden und -o oder eine andere Option verwenden möchten, den externen Zeitbefehl aufrufen müssen, indem Sie den expliziten Pfad usr/bin/time verwenden statt nur Zeit .

$ usr/bin/time -o hostinger-ping-info.log ping hostinger.com

Um den Inhalt von hostinger-ping-info.log zu überprüfen , verwenden Sie die Katze Befehl:

$ cat hostinger-ping-info.log

Erhalten einer detaillierten Ausgabe in einer Datei

Die Standardausgabe des Zeitbefehls enthält möglicherweise nicht alle Details, die Sie über einen bestimmten Prozess wissen möchten. Um eine detaillierte Ausgabe anzuzeigen, fügen Sie unter Linux die Option -v zum time-Befehl hinzu.

Zum Beispiel, wenn Sie den Ping oder die Antwortzeit von hostinger.com finden möchten und detaillierte Informationen zum Prozess anzeigen möchten, geben Sie den folgenden Befehl ein:

$ time -v ping hostinger.com

Wenn Sie den GNU-Zeitbefehl nicht verwenden oder auf einen Standardfehlerstrom gestoßen sind, versuchen Sie, den externen Zeitbefehl auszulösen, indem Sie den vollständigen Pfad usr/bin/time eingeben stattdessen:

$ usr/bin/time -v ping hostinger.com

Alternativ können Benutzer die Arten von Informationen anpassen, die sie in der Ausgabe sehen möchten, wenn sie den Zeitbefehl eingeben, indem sie diese Ausgabeformatoptionen verwenden:

% Ein wörtliches `%’.
C Name und Befehlszeilenargumente des zeitgesteuerten Befehls.
D Die durchschnittliche Größe des nicht freigegebenen Datenbereichs des Prozesses in Kilobyte.
E Die verstrichene Realzeit (Wanduhrzeit), die vom Prozess verwendet wird, in (Stunden:)Minuten:Sekunden.
F Die Anzahl der schwerwiegenden oder E/A-erfordernden Seitenfehler, die während der Ausführung des Prozesses aufgetreten sind. Dies sind Fehler, bei denen die Seite aus dem Primärspeicher migriert wurde.
Ich Die i Anzahl der Dateisystemeingaben durch den Prozess.
K Die durchschnittliche Gesamtspeichernutzung des Prozesses in Kilobyte.
M Die maximale residente Satzgröße des Prozesses während seiner Lebensdauer in Kilobyte.
O Die Anzahl der Dateisystemausgaben durch den Prozess.
P Prozentsatz der CPU, die dieser Job erhielt. Dies sind nur die Benutzer- und Systemzeiten dividiert durch die Gesamtlaufzeit. Es druckt auch ein Prozentzeichen.
R Die Anzahl geringfügiger oder behebbarer Seitenfehler. Dies sind Seiten, die nicht gültig sind, die aber noch nicht von anderen virtuellen Seiten beansprucht wurden. Somit sind die Daten auf der Seite noch korrekt, aber die Systemtabellen müssen aktualisiert werden.
S Die Gesamtzahl der vom System für den Prozess (im Kernelmodus) verwendeten CPU-Sekunden in Sekunden.
U Gesamtzahl der CPU-Sekunden, die der Prozess direkt (im Benutzermodus) in Sekunden verwendet hat.
W Wie oft der Prozess aus dem Hauptspeicher ausgelagert wurde.
X Die durchschnittliche Menge an freigegebenem Text im Prozess in Kilobyte.
Z Die Seitengröße des z-Systems in Bytes. Als systemspezifische Konstante kann sie zwischen den Systemen variieren.
c Die Anzahl der unfreiwilligen Kontextwechsel des Prozesses (weil die Zeitscheibe abgelaufen ist).
e Verstrichene Realzeit (Wanduhr), die vom Prozess verwendet wird, in Sekunden.
k Die Anzahl der an den Prozess gelieferten Signale.
p Durchschnittliche nicht freigegebene Stapelgröße des Prozesses in Kilobyte.
r Die Anzahl der vom Prozess empfangenen Socket-Nachrichten.
s Die Anzahl der vom Prozess gesendeten Socket-Nachrichten.
t Durchschnittliche residente Satzgröße des Prozesses in Kilobyte.
w Anzahl der freiwilligen Kontextwechsel des Programms, beispielsweise während des Wartens auf den Abschluss einer E/A-Operation.
x Der Beendigungsstatus des Befehls.

Wenn Sie beispielsweise die Anzahl der vom Befehl empfangenen Socket-Nachrichten anzeigen möchten, geben Sie Folgendes in die Shell ein:

$ /usr/bin/time -f "Socket Messages Received: %r" command

Wenn Sie alternativ die Bash-Shell verwenden, bevorzugen Sie möglicherweise das TIMEFORMAT des integrierten Zeitbefehls. TIMEFORMAT verwendet eine bestimmte Formatzeichenfolge, damit Benutzer angeben können, wie die Zeitinformationen angezeigt werden sollen.

Hier ist eine Liste der TIMEFORMAT-Parameterwerte:

%% Ein Literal %.
%[p][l]R Die verstrichene Zeit in Sekunden.
%[p][l]U Die Anzahl der CPU-Sekunden, die der Prozess im Benutzermodus verbracht hat.
%[p][l]S Die Anzahl der CPU-Sekunden, die der Prozess im Systemmodus verbracht hat.
%P Der CPU-Prozentsatz, berechnet als (%U + %S) / %R.

Fazit

Der time-Befehl in Linux ist ein hervorragendes Werkzeug, um die Ausführungszeit und die Gesamtleistung eines bestimmten Prozesses zu überprüfen. In diesem Handbuch haben Sie den Linux-Befehl time, seinen Zweck, seine Syntax und seine Ausgabe kennengelernt.

Wir hoffen, dass dieser Leitfaden Ihnen dabei geholfen hat, effizienter im Linux-System zu navigieren.


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. So verwenden Sie den Befehl „at“, um eine Aufgabe zu einem bestimmten oder späteren Zeitpunkt in Linux zu planen

  4. Verwendung des Linux-Touch-Befehls + Beispiele

  5. Wie verwenden Sie reguläre Ausdrücke mit dem cp-Befehl in Linux?

So verwenden Sie den Linux-nohup-Befehl

So verwenden Sie du Command unter Linux

So verwenden Sie den Befehl sysctl unter Linux

So verwenden Sie den Befehl zum Herunterfahren von Linux

So verwenden Sie grep unter Linux

Alles, was Sie über den Linux-Chmod-Befehl wissen müssen