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

Finden Sie die Ausführungszeit eines Befehls oder Prozesses in Linux

Sie kennen wahrscheinlich die Startzeit eines Befehls/Prozesses und wie lange ein Prozess läuft in Linux und Unix-ähnlichen Systemen. Aber woher wissen Sie, wann der Befehl oder Prozess beendet wurde und/oder wie lange es insgesamt dauert, bis der Befehl/Prozess abgeschlossen ist? Nun, es ist einfach! Auf Unix-ähnlichen Systemen gibt es ein Dienstprogramm namens 'GNU time' das speziell für diesen Zweck entwickelt wurde. Mit dem Time-Dienstprogramm können wir auf einfache Weise die Gesamtausführungszeit eines Befehls oder Programms in Linux-Betriebssystemen messen. Das Gute ist, dass der Befehl „time“ in den meisten Linux-Distributionen vorinstalliert ist, sodass Sie sich nicht um die Installation kümmern müssen.

Finden Sie die Ausführungszeit eines Befehls oder Prozesses in Linux

Um die Ausführungszeit eines Befehls/Programms zu messen, einfach ausführen.

$ /usr/bin/time -p ls

Oder,

$ time ls

Beispielausgabe:

dir1 dir2 file1 file2 mcelog

real 0m0.007s
user 0m0.001s
sys 0m0.004s
$ time ls -a
. .bash_logout dir1 file2 mcelog .sudo_as_admin_successful
.. .bashrc dir2 .gnupg .profile .wget-hsts
.bash_history .cache file1 .local .stack

real 0m0.008s
user 0m0.001s
sys 0m0.005s

Die obigen Befehle zeigen die Gesamtausführungszeit von 'ls an ' Befehl. Ersetzen Sie "ls " mit einem beliebigen Befehl/Prozess Ihrer Wahl, um die Gesamtausführungszeit zu ermitteln.

Hier,

  1. real - bezieht sich auf die Gesamtzeit, die der Befehl/das Programm benötigt,
  2. user - bezieht sich auf die Zeit, die das Programm im Benutzermodus benötigt,
  3. sys - bezieht sich auf die Zeit, die das Programm im Kernelmodus benötigt.

Wir können den Befehl auch so begrenzen, dass er nur für eine bestimmte Zeit ausgeführt wird. Weitere Informationen finden Sie in der folgenden Anleitung.

  • So führen Sie einen Befehl für eine bestimmte Zeit in Linux aus

Zeit gegen /usr/bin/time

Wie Sie vielleicht bemerkt haben, haben wir zwei Befehle 'time' verwendet und '/usr/bin/time ' in den obigen Beispielen. Sie fragen sich vielleicht, was der Unterschied zwischen ihnen ist.

Lassen Sie uns zuerst sehen, was eigentlich 'time ist ' verwendet 'type ' Befehl. Für diejenigen, die es nicht wissen, der Typ Befehl wird verwendet, um die Informationen über einen Linux-Befehl herauszufinden. Weitere Einzelheiten finden Sie in diesem Leitfaden .

$ type -a time
time is a shell keyword
time is /usr/bin/time

Wie Sie in der obigen Ausgabe sehen, ist Zeit beides,

  • Ein Schlüsselwort, das in die BASH-Shell integriert ist
  • Eine ausführbare Datei, z. B. /usr/bin/time

Da Shell-Keywords Vorrang vor ausführbaren Dateien haben, wenn Sie einfach time ausführen Befehl ohne vollständigen Pfad ausführen, führen Sie einen integrierten Shell-Befehl aus. Aber wenn Sie /usr/bin/time ausführen , Sie führen eine echte GNU-Zeit aus Programm. Um auf den eigentlichen Befehl zugreifen zu können, müssen Sie also möglicherweise seinen expliziten Pfad angeben. Klar? Gut!

Das eingebaute Shell-Schlüsselwort „time“ ist in den meisten Shells wie BASH, ZSH, CSH, KSH, TCSH usw. verfügbar. Das Shell-Schlüsselwort „time“ hat weniger Optionen als die ausführbaren Dateien. Die einzige Option, die Sie im Schlüsselwort „time“ verwenden können, ist -p .

Sie wissen jetzt, wie Sie die Gesamtausführungszeit eines bestimmten Befehls/Prozesses mit dem Befehl „time“ ermitteln. Möchten Sie etwas mehr über das Dienstprogramm „GNU Time“ erfahren? Lesen Sie weiter!

Eine kurze Einführung über das 'GNU Time'-Programm

Das GNU-Zeitprogramm führt einen Befehl/ein Programm mit gegebenen Argumenten aus und fasst die Nutzung der Systemressourcen als Standardausgabe zusammen, nachdem der Befehl ausgeführt wurde. Im Gegensatz zum Schlüsselwort „time“ zeigt das GNU-Zeitprogramm nicht nur die vom Befehl/Prozess verwendete Zeit an, sondern auch andere Ressourcen wie Speicher, E/A und IPC-Aufrufe.

Die typische Syntax des Time-Befehls ist:

/usr/bin/time [options] command [arguments...]

Die „Optionen“ in der obigen Syntax beziehen sich auf eine Reihe von Flags, die mit dem Zeitbefehl verwendet werden können, um eine bestimmte Funktionalität auszuführen. Die Liste der verfügbaren Optionen finden Sie unten.

  • -f , --format - Verwenden Sie diese Option, um das Ausgabeformat nach Ihren Wünschen festzulegen.
  • -p , --portability - Verwenden Sie das portable Ausgabeformat.
  • -o Datei, --output =DATEI - Schreibt die Ausgabe in FILE statt als Standardausgabe anzuzeigen.
  • -a , --append - Die Ausgabe an die DATEI anhängen, anstatt sie zu überschreiben.
  • -v , --verbose - Diese Option zeigt die detaillierte Beschreibung der Ausgabe des 'time'-Dienstprogramms an.
  • --quiet - Diese Option verhindert, dass das Dienstprogramm time 'time' den Status des Programms meldet.

Wenn Sie das Programm „GNU time“ ohne Optionen verwenden, sehen Sie eine Ausgabe wie unten.

$ /usr/bin/time wc /etc/hosts
9 28 273 /etc/hosts
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2024maxresident)k
0inputs+0outputs (0major+73minor)pagefaults 0swaps

Wenn Sie denselben Befehl mit dem Shell-integrierten Schlüsselwort 'time' ausführen, wäre die Ausgabe etwas anders:

$ time wc /etc/hosts
9 28 273 /etc/hosts

real 0m0.006s
user 0m0.001s
sys 0m0.004s

Manchmal möchten Sie möglicherweise die Ausgabe der Systemressourcennutzung in eine Datei schreiben, anstatt sie im Terminal anzuzeigen. Verwenden Sie dazu -o kennzeichnen wie unten.

$ /usr/bin/time -o file.txt ls
dir1 dir2 file1 file2 file.txt mcelog

Wie Sie in der Ausgabe sehen können, zeigt das Time-Dienstprogramm die Ausgabe nicht an. Denn wir schreiben die Ausgabe in eine Datei namens file.txt . Schauen wir uns diese Datei an:

$ cat file.txt 
0.00user 0.00system 0:00.00elapsed 66%CPU (0avgtext+0avgdata 2512maxresident)k
0inputs+0outputs (0major+106minor)pagefaults 0swaps

Wenn Sie -o verwenden Flag, wenn es keine Datei mit dem Namen 'file.txt' gibt, wird es die Ausgabe erstellen und darin schreiben. Wenn die file.txt bereits vorhanden ist, wird der Inhalt überschrieben.

Sie können die Ausgabe auch mit -a an die Datei anhängen, anstatt sie zu überschreiben Flagge.

$ /usr/bin/time -a file.txt ls

Das -f Flag ermöglicht es dem Benutzer, das Format der Ausgabe nach seinen Wünschen zu steuern. Angenommen, der folgende Befehl zeigt die Ausgabe von „ls“ an ' Befehl und zeigt nur den Benutzer, das System und die Gesamtzeit an.

$ /usr/bin/time -f "\t%E real,\t%U user,\t%S sys" ls
dir1 dir2 file1 file2 mcelog
0:00.00 real, 0.00 user, 0.00 sys

Bitte beachten Sie, dass der eingebaute Shell-Befehl 'time' nicht alle Funktionen des GNU-Zeitprogramms unterstützt.

Weitere Einzelheiten zum GNU-Zeitdienstprogramm finden Sie in den Manpages.

$ man time

Um mehr über das in Bash integrierte Schlüsselwort „Time“ zu erfahren, führen Sie Folgendes aus:

$ help time

Linux
  1. Planen Sie eine Aufgabe mit dem Linux-Befehl at

  2. Meistern Sie den Linux-ls-Befehl

  3. So verwenden Sie den Linux-Befehl find zum Suchen von Dateien

  4. Der Befehl locate unter Linux

  5. Was ist ein Befehl, um die Priorität des Prozesses in Linux zu finden?

So ändern Sie die Priorität eines Prozesses in Linux

So finden Sie Dateien mit dem fd-Befehl in Linux

Der Timer-Befehl in Linux

15 super nützliche Beispiele für den Find-Befehl in Linux

Verstehen des Zeitbefehls in Linux

Der Linux-Befehl zum Suchen des Verzeichnisses:Erklärt