So verwenden Sie den time-Befehl unter Linux

Linux-PC mit geöffnetem Terminalfenster

Fatmawati Achmad Zaenuri/Shutterstock.com



Sie möchten wissen, wie lange ein Prozess läuft und vieles mehr? Das Linux |_+_| -Befehl gibt Zeitstatistiken zurück, die Ihnen einen kühlen Einblick in die von Ihren Programmen verwendeten Ressourcen geben.

Zeit hat viele Verwandte

Es gibt viele Linux-Distributionen und verschiedene Unix-ähnliche Betriebssysteme. Jeder von ihnen hat eine Standard-Befehls-Shell. Die häufigste Standard-Shell in modernen Linux-Distributionen ist die Bash-Shell. Aber es gibt noch viele andere, wie die Z-Shell (zsh) und die Korn-Shell (ksh).





Alle diese Schalen enthalten ihre eigenen |_+_| Befehl, entweder als a eingebaut Befehl oder als a reserviertes Wort . Wenn Sie |_+_| . eingeben in einem Terminalfenster führt die Shell ihren internen Befehl aus, anstatt das GNU |_+_| . zu verwenden Binärdatei, die als Teil Ihrer Linux-Distribution bereitgestellt wird.

Wir wollen die GNU-Version von |_+_| . verwenden weil es mehr hat Optionen und ist flexibler.



Welche Zeit wird ausgeführt?

Sie können überprüfen, welche Version ausgeführt wird, indem Sie |_+_| . verwenden Befehl. |_+_| wird Sie wissen lassen, ob die Shell Ihre Anweisung selbst mit ihren internen Routinen verarbeitet oder sie an die GNU-Binärdatei weitergibt.

Anzeige

Geben Sie in einem Terminalfenster das Wort |_+_|, ein Leerzeichen und dann das Wort |_+_| . ein und drücken Sie die Eingabetaste.

time

Geben Sie Zeit in ein Bash-Terminalfenster ein



Wir können das in der Bash-Shell sehen |_+_| ist ein reserviertes Wort. Das bedeutet, dass Bash seine internen|_+_| . verwendet Routinen standardmäßig.

time

Geben Sie Zeit in ein ZSH-Terminalfenster ein

In der Z-Shell (zsh) |_+_| ist ein reserviertes Wort, daher werden standardmäßig die internen Shell-Routinen verwendet.

time

Geben Sie time in ein Korn-Shell-Fenster ein

In der Korn-Shell |_+_| ist ein Stichwort. Anstelle von GNU wird eine interne Routine verwendet |_+_| Befehl.

VERBUNDEN: Was ist ZSH und warum sollten Sie es anstelle von Bash verwenden?

Ausführen des GNU time-Befehls

Wenn die Shell auf Ihrem Linux-System ein internes |_+_| Routine müssen Sie explizit angeben, wenn Sie das GNU |_+_| . verwenden möchten binär. Sie müssen entweder:

  • Geben Sie den gesamten Pfad zur Binärdatei an, z. B. |_+_|. Führen Sie die |_+_| Befehl, um diesen Pfad zu finden.
  • Verwenden Sie |_+_|.
  • Verwenden Sie einen umgekehrten Schrägstrich wie |_+_|.

Die |_+_| Befehl gibt uns den Pfad zur Binärdatei.

Anzeige

Wir können dies testen, indem wir |_+_| . verwenden als Befehl zum Starten der GNU-Binärdatei. Das funktioniert. Wir erhalten eine Antwort vom |_+_| Befehl, der uns mitteilt, dass wir keine Befehlszeilenparameter angegeben haben, an denen er arbeiten könnte.

Eingabe von |_+_| funktioniert auch, und wir erhalten die gleichen Nutzungsinformationen von |_+_|. Die |_+_| Befehl weist die Shell an, den nächsten Befehl zu ignorieren, damit er außerhalb der Shell verarbeitet wird.

Verwenden eines |_+_| Zeichen vor dem Befehlsnamen entspricht der Verwendung von |_+_| vor dem Befehlsnamen.

Der einfachste Weg, um sicherzustellen, dass Sie das GNU verwenden |_+_| binary ist die Verwendung der Backslash-Option.

time time

|_+_| ruft die Hülse Version der Zeit. |_+_| verwendet die |_+_| binär .

Verwenden des Zeitbefehls

Lassen Sie uns einige Programme timen. Wir verwenden zwei Programme namens |_+_| und |_+_|. Sie wurden aus loop1.c und loop2.c erstellt. Sie tun nichts Nützliches, außer die Auswirkungen einer Art von Codierungsineffizienz zu demonstrieren.

Anzeige

Dies ist loop1.c. Die Länge einer Zeichenfolge wird innerhalb der beiden verschachtelten Schleifen benötigt. Die Länge wird im Voraus außerhalb der beiden verschachtelten Schleifen ermittelt.

type

Dies ist loop2.c. Die Länge der Saite wird immer wieder für jeden Zyklus der äußeren Schleife ermittelt. Diese Ineffizienz sollte sich in den Timings zeigen.

type

Lass uns die |_+_| . anzünden programmieren und verwenden |_+_| seine Leistung zu messen.

type

Machen wir jetzt dasselbe für |_+_|.

time

Das hat uns zwei Sätze von Ergebnissen gegeben, aber sie sind in einem wirklich hässlichen Format. Wir können später etwas dagegen tun, aber lassen Sie uns ein paar Informationen aus den Ergebnissen auswählen.

Wenn Programme ausgeführt werden, gibt es zwei Ausführungsmodi, zwischen denen sie hin- und hergeschaltet werden. Diese nennt man Benutzermodus und Kernel-Modus .

Kurz gesagt, ein Prozess im Benutzermodus kann außerhalb seiner eigenen Zuordnung nicht direkt auf Hardware oder Referenzspeicher zugreifen. Um Zugriff auf solche Ressourcen zu erhalten, muss der Prozess Anfragen an den Kernel stellen. Wenn der Kernel die Anforderung genehmigt, geht der Prozess in die Kernelmodusausführung über, bis die Anforderung erfüllt ist. Der Prozess wird dann zurück in die Benutzermodusausführung geschaltet.

Anzeige

Die Ergebnisse für |_+_| sag uns, dass |_+_| 0,09 Sekunden im Benutzermodus verbracht. Es hat entweder null Zeit im Kernel-Modus verbracht oder die Zeit im Kernel-Modus ist ein zu geringer Wert, um nach dem Abrunden registriert zu werden. Die gesamte verstrichene Zeit betrug 0,1 Sekunden. |_+_| wurde über die gesamte verstrichene Zeit durchschnittlich 89 % der CPU-Zeit zugeteilt.

Das ineffiziente |_+_| Die Ausführung des Programms dauerte dreimal länger. Die gesamte verstrichene Zeit beträgt 0,3 Sekunden. Die Dauer der Verarbeitungszeit im Benutzermodus beträgt 0,29 Sekunden. Nichts registriert sich für den Kernel-Modus. |_+_| erhielt für die Dauer seiner Ausführung durchschnittlich 96 % der CPU-Zeit.

Formatieren der Ausgabe

Sie können die Ausgabe von |_+_| . anpassen mit einer Formatzeichenfolge. Die Formatzeichenfolge kann Text und Formatbezeichner enthalten. Die Liste der Formatbezeichner kann sein auf der manpage gefunden für |_+_|. Jeder der Formatbezeichner repräsentiert eine Information.

Wenn die Zeichenfolge gedruckt wird, werden die Formatbezeichner durch die tatsächlichen Werte ersetzt, die sie darstellen. Der Formatbezeichner für den Prozentsatz der CPU ist beispielsweise der Buchstabe |_+_| . Um |_+_| . anzuzeigen dass ein Formatbezeichner nicht nur ein normaler Buchstabe ist, fügen Sie ein Prozentzeichen hinzu, wie |_+_| . Verwenden wir es in einem Beispiel.

Die |_+_| Die Option (Formatstring) wird verwendet, um |_+_| . mitzuteilen was folgt, ist eine Formatzeichenfolge.

Unsere Formatzeichenfolge wird die Zeichen Program: und den Namen des Programms (und alle Befehlszeilenparameter, die Sie an das Programm übergeben) ausgeben. Die |_+_| Formatbezeichner steht für Name und Befehlszeilenargumente des Befehls, der zeitlich festgelegt wird. Die |_+_| bewirkt, dass die Ausgabe in die nächste Zeile verschoben wird.

Anzeige

Es gibt viele Formatbezeichner, bei denen die Groß-/Kleinschreibung beachtet wird. Stellen Sie also sicher, dass Sie sie richtig eingeben, wenn Sie dies selbst tun.

Als nächstes drucken wir die Zeichen Gesamtzeit: gefolgt vom Wert der gesamten verstrichenen Zeit für diesen Programmlauf (dargestellt durch |_+_|).

Wir verwenden |_+_| um eine weitere neue Zeile zu geben. Wir geben dann die Zeichen Benutzermodus (s) aus, gefolgt vom Wert der im Benutzermodus verbrachten CPU-Zeit, gekennzeichnet durch das |_+_|.

Wir verwenden |_+_| um eine weitere neue Zeile zu geben. Dieses Mal bereiten wir uns auf den Kernel-Zeitwert vor. Wir geben die Zeichen Kernel Mode (s) aus, gefolgt vom Formatbezeichner für die im Kernel-Modus verbrachte CPU-Zeit, der |_+_| ist.

Schließlich werden wir die Zeichen |_+_|CPU: ausgeben, um uns eine neue Zeile und den Titel für diesen Datenwert zu geben. Die |_+_| Der Formatbezeichner gibt den durchschnittlichen Prozentsatz der CPU-Zeit an, die vom zeitgesteuerten Prozess verwendet wird.

Die gesamte Formatzeichenfolge wird in Anführungszeichen eingeschlossen. Wir hätten ein paar |_+_| . einfügen können Zeichen, um Tabulatoren in der Ausgabe zu platzieren, wenn wir bei der Ausrichtung der Werte pingelig waren.

time

Senden der Ausgabe an eine Datei

Um die Zeiten der von Ihnen durchgeführten Tests aufzuzeichnen, können Sie die Ausgabe von |_+_| . senden zu einer Datei. Verwenden Sie dazu die |_+_| (Ausgabe)-Option. Die Ausgabe Ihres Programms wird weiterhin im Terminalfenster angezeigt. Es ist nur die Ausgabe von |_+_| das wird in die Datei umgeleitet.

Anzeige

Wir können den Test erneut ausführen und die Ausgabe im |_+_| . speichern Datei wie folgt:

time time

Die |_+_| Programmausgabe wird im Terminalfenster angezeigt und die Ergebnisse aus |_+_| gehe zum |_+_| Datei.

Wenn Sie die nächsten Ergebnisse in derselben Datei erfassen möchten, müssen Sie |_+_| . verwenden (anhängen) Option wie folgt:

time time

Es sollte jetzt klar sein, warum wir das |_+_| . verwendet haben Formatbezeichner, um den Namen des Programms in die Ausgabe der Formatzeichenfolge einzuschließen.

Und wir haben keine Zeit

Wahrscheinlich für Programmierer und Entwickler bei der Feinabstimmung ihres Codes am nützlichsten, die |_+_| Der Befehl ist auch für jeden nützlich, der mehr darüber erfahren möchte, was bei jedem Start eines Programms unter der Haube vor sich geht.

Linux-Befehle
Dateien Teer · pv · Katze · tac · chmod · Griff · unterschied · sed · Mit · Mann · geschoben · popd · fsck · Testdisk · seq · fd · pandoc · CD · $PFAD · awk · beitreten · jq · falten · einzigartig · Journalctl · Schwanz · Zustand · ls · fstab · rauswerfen · weniger · chgrp · chown · rev · suchen · Saiten · Typ · umbenennen · Postleitzahl · entpacken · montieren · ummount · Installieren · fdisk · mkfs · rm · rmdir · rsync · df · gpg · wir · Nano · mkdir · von · ln · Patch · Konvertieren · rclon · Fetzen · SRM
Prozesse alias · Bildschirm · oben · nett · renice · Fortschritt · strace · System · tmux · chsh · Geschichte · beim · Charge · kostenlos · die · dmesg · Benutzermod · ps · chroot · xargs · tty · kleiner Finger · lsof · vmstat · Auszeit · Mauer · ja · töten · Schlaf · sudo · seine · Zeit · groupadd · Benutzermod · Gruppen · lshw · stilllegen · neu starten · halt · ausschalten · passwd · lscpu · crontab · Datum · bg · fg
Vernetzung netstat · Klingeln · Traceroute · ip · ss · Wer ist · fail2ban · bmon · Sie · Finger · nmap · ftp · Locken · wget · Wer · Wer bin ich · In · iptables · ssh-keygen · ufw

VERBUNDEN: Beste Linux-Laptops für Entwickler und Enthusiasten

WEITER LESEN
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
  • › So finden Sie Ihr Spotify Wrapped 2021
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Was ist MIL-SPEC Fallschutz?
Profilfoto von Dave McKay Dave McKay
Dave McKay benutzte zum ersten Mal Computer, als Lochstreifen in Mode waren, und programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute hauptberuflich Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Sein Schreiben wurde von howtogeek.com, cloudavvyit.com, itenterpriser.com und opensource.com veröffentlicht. Dave ist ein Linux-Evangelist und Open-Source-Verfechter.
Vollständige Biografie lesen

Interessante Artikel