So überwachen Sie den Fortschritt von Linux-Befehlen (mit pv und progress)

Veröffentlicht: 2022-01-29
Linux-Terminal-Eingabeaufforderung auf einem Laptop
Fatmawati Achmad Zaenuri/Shutterstock.com

Anstatt blind zu fliegen, verwenden Sie die Linux-Befehle pv und progress , um den Fortschritt eines Befehls zu verfolgen. Diese Dienstprogramme geben Ihnen Fortschrittsbalken für Befehle, die normalerweise keine haben. Sie sehen auch eine geschätzte Zeit bis zur Fertigstellung.

Wenn Sie sich auf einem Langstreckenflug in einem Flugzeug ohne Videobildschirme in den Sitzlehnen befinden, ist es nicht einfach zu wissen, wie weit Sie auf Ihrer Reise sind. Du weißt, wann du abgehauen bist. Sie wissen, wie lange der Flug voraussichtlich dauern wird. Aber woher wissen Sie, ob Sie auf Kurs, pünktlich oder weit hinter dem Zeitplan liegen? Wenn Sie sich den Film während des Fluges nicht ansehen möchten, können Sie normalerweise Ihren Videobildschirm so umschalten, dass eine Karte mit der Position Ihres Flugzeugs darauf angezeigt wird. Sie erhalten auch einige Statistiken, wie z. B. eine erwartete Ankunftszeit (ETA), was großartig ist.

Das Starten eines Befehls aus dem Terminalfenster kann sich manchmal wie ein Langstreckenflug ohne Videobildschirm anfühlen. Sie haben keinen Hinweis darauf, ob alles in Ordnung ist oder ob der Prozess hängen geblieben ist oder wie kurz vor dem Abschluss er steht. Ein blinkender Cursor ist nicht sehr informativ.

Die pv und progress -Befehle geben Ihnen einige Statistiken und ein wenig visuelles Feedback. Sie können sehen, wie kurz vor dem Abschluss der Vorgang steht. Das heißt, Sie erhalten eine ETA für Ihre laufenden Prozesse. Verglichen mit dem Starren auf einen Cursor gewinnt das zweifellos.

PV installieren

Sie müssen pv installieren.

Verwenden Sie diesen Befehl, um pv unter Ubuntu zu installieren:

 sudo apt-get install pv 

Verwenden Sie diesen Befehl, um pv auf Fedora zu installieren:

 sudo dnf install pv 

Verwenden Sie diesen Befehl, um pv auf Manjaro zu installieren:

 sudo pacman-Syu pv 

Verwendung von pv

pv steht für Rohrbetrachter. Piping muss irgendwo in den Befehl einbezogen werden. Hier ist ein Beispiel, in dem wir ein ISO-Image durch zip , um eine komprimierte Zip-Datei der ISO zu erstellen.

Anzeige

Um die Befehle so weit zu verlangsamen, dass ein Screenshot gemacht werden konnte, wurden einige der Dateien in den für diesen Artikel verwendeten Beispielen auf einem alten, langsamen, externen USB namens SILVERXHD gespeichert.

 pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip 

Die Informationen, die pv uns gibt, sind in der unteren Zeile des Displays zu sehen.

Von links nach rechts werden folgende Informationen angezeigt:

  • Die bisher übertragenen Daten.
  • Die Zeit ist weit verstrichen.
  • Die Datenübertragungsrate (Durchsatz).
  • Ein Fortschrittsbalken und eine abgeschlossene Prozentzahl.
  • Die geschätzte verbleibende Zeit bis zur Fertigstellung (ETA).

Kopieren einer Datei mit pv

Verwenden Sie diesen Befehl, um eine Datei mit der Ausgabe von pv zu kopieren:

 pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso 

Wir erhalten einen Fortschrittsbericht, während die Datei kopiert wird.

Kopieren einer Datei mit pv in ein Terminalfenster

Kopieren mehrerer Dateien mit pv

Um mehrere Dateien und Ordner mit pv zu kopieren, müssen wir einen kleinen Trick anwenden. Wir verwenden tar , um die Dateien für uns zu verschieben.

 tar -c Hilfedateien/ | PV | tar -x -C Dokumente/ 

Anzeige

Der Teil tar -c help-files/ des Befehls weist tar an, ein Archiv der Dateien im Ordner help-files zu erstellen ( -c ). Dies wird durch pv geleitet, sodass wir eine Anzeige des Fortschritts erhalten. Es wird dann für den letzten Teil des Befehls zurück in tar geleitet. Das Archiv wird entpackt ( -x ) und das Verzeichnis vor dem Entpacken in Documents geändert ( -C ).

Daher werden die Dateien und Ordner, die sich in Hilfedateien befinden, mit einer Fortschrittsanzeige in den Ordner Dokumente kopiert.

Die Ausgabe ist diesmal etwas anders.

Wir bekommen keine ETA. Der Fortschrittsbalken zeigt jetzt einen sich bewegenden Indikator an. Es zeigt, dass der Prozess aktiv ist, aber es wächst nicht von links nach rechts wie ein herkömmlicher Fortschrittsbalken. pv ist darauf beschränkt, die Informationen anzuzeigen, die es aus dem Prozess extrahieren kann, der geleitet wird.

Verwenden von pv und tar zum Erstellen eines Archivs

Das Kopieren von Dateien mit pv und tar hinterlässt keine Archivdatei. Eine Art „virtuelles“ Archiv wird von tar erstellt, das direkt wieder in tar eingespeist wird, um die Dateien zu extrahieren. Wenn unser Ziel darin besteht, Dateien zu kopieren, ist dies erreicht. Aber was, wenn wir eine Archivdatei erstellen wollen?

Wir können immer noch tar verwenden, um eine Archivdatei zu erstellen und einen Fortschrittsbericht von pv zu erhalten. Die mit tar verwendeten Optionen sind -c (Archiv erstellen), -z (mit gzip komprimieren) und -f (Dateiname des Archivs).

Beachten Sie, dass wir - als Dateinamen verwenden, was dazu führt, dass tar stdout verwendet und seine Ausgabe in das Terminalfenster schreibt. Wir sehen diese Ausgabe nicht, weil sie durch pv geleitet wird.

Anzeige

Der eigentliche Name des Archivs wird der Dateiname sein, in den wir die Ausgabe von pv . In diesem Fall ist es „help-files.tgz“.

 tar -czf - ./help-files/ | pv > help-files.tgz 

Wir erhalten die gleichen Fortschrittsanzeigen wie zuvor und die Archivdatei wird für uns erstellt.

RELATED: So komprimieren und extrahieren Sie Dateien mit dem tar-Befehl unter Linux

Die PV-Anzeigeoptionen

Es gibt eine Reihe von Optionen, die Sie mit pv verwenden können, um die Details des Berichts zu ändern.

Wenn Sie eine dieser Optionen verwenden, werden alle anderen Optionen deaktiviert. Wenn Sie also drei der Anzeigeoptionen verwenden möchten, müssen Sie diese drei Optionen angeben.

Die Verwendung von pv ohne Optionen entspricht der Verwendung der -pterb Optionen.

  • -p : Zeigt den Prozentsatz der Fertigstellung an. Dies ist der Fortschrittsbalken und die abgeschlossene Prozentzahl.
  • -t : Zeigt die verstrichene Zeit an .
  • -e : Zeigt die voraussichtliche Ankunftszeit an .
  • -r : Zeigt die Datenübertragungsrate an.
  • -b : Zeigt die Byteanzahl an (bisher übertragene Daten).
  • -n : Zeigt den Prozentsatz als ganze Zahl an. Dies druckt den abgeschlossenen Prozentsatz als Ganzzahl, mit jeder neuen Aktualisierung in einer neuen Zeile.

Lassen Sie uns den letzten Befehl wiederholen und die Option -p (Percentage Completed) an pv übergeben.

 tar -czf - ./help-files/ | pv - p > help-files.tgz 

Anzeige

Dadurch werden alle anderen Anzeigeoptionen deaktiviert. pv liefert nur den Prozentsatz des abgeschlossenen Elements.

Da pv keine prozentuale Fertigstellungszahl von tar erhält, wird der Fortschrittsbalken durch eine sich bewegende Anzeige ersetzt. Es gibt keine Prozentzahl.

Mit PV Mit WC

Wir können pv verwenden, um eine Textdatei (oder Dateien) in wc zu leiten. wc zählt dann die Wagenrückläufe, Zeichen und Wörter und pv gibt uns einen Fortschrittsbericht.

Hier leiten wir alle „.page“-Dateien im Verzeichnis help-files an wc weiter.

Wenn wc abgeschlossen ist, können wir die Anzahl der Wagenrückläufe (Zeilen), Zeichen und Wörter aus allen „.page“-Dateien im Ordner „Hilfedateien“ sehen.

Installation des progress-Befehls

Der Befehl progress liefert die gleichen nützlichen Informationen wie pv , funktioniert aber mit einem bestimmten Satz von Linux-Befehlen.

Um den progress in Ubuntu zu installieren, verwenden Sie diesen Befehl:

 sudo apt-get Installationsfortschritt 

Um den progress in Fedora zu installieren, verwenden Sie diesen Befehl:

 sudo dnf Installationsfortschritt 

sudo dnf Installationsfortschritt in einem Terminalfenster

Um den progress in Manjaro zu installieren, verwenden Sie diesen Befehl:

 sudo pacman -Syu Fortschritt 

Der Befehlsfortschritt funktioniert mit

Wenn Sie progress in ein Terminalfenster eingeben und die Eingabetaste drücken, erhalten Sie eine Liste der Befehle, mit denen progress funktioniert.

 Fortschritt 

Verwenden von Fortschritt mit Pipes

Es gibt zwei Techniken, die wir verwenden können, um den progress von Befehlen zu überwachen. Die erste besteht darin, Rohre zu verwenden.

Der Befehl tar befindet sich in der Liste der unterstützten Befehle, die der progress überwachen kann, also verwenden wir tar .

Die Optionen, die wir verwenden, sind die Standardoptionen -c (Archiv erstellen), -z (mit gzip komprimieren) und -f (Dateiname). Wir werden ein komprimiertes Archiv von allem im Ordner „Hilfedateien“ erstellen, und das Archiv wird „help.tgz“ heißen.

Wir leiten das an progress und verwenden die Option -m (monitor), damit progress über den Prozess berichtet, bis er abgeschlossen ist.

 tar -czf help.tgz ./help-files/ | Fortschritt -m 

Das Terminalfenster zeigt den Fortschritt des tar -Befehls beim Erstellen des Archivs an.

Anzeige

Während jede Datei verarbeitet wird, wird sie mit den folgenden Informationen aufgelistet:

  • Die Prozess-ID.
  • Der Prozessname.
  • Prozentsatz abgeschlossen.
  • Verarbeitete Daten und Gesamtgröße der Datei.
  • Datenrate (Durchsatz).
  • Geschätzte verbleibende Zeit (ETA).

Sie werden überrascht sein, einen zweiten Datensatz zu sehen. Dieser erste Datensatz ist für tar . Der zweite ist für gzip . tar ruft gzip auf, um die Komprimierung durchzuführen. Da sich gzip in der Liste der unterstützten Befehle befindet, werden progress darüber angezeigt.

Verwenden des Fortschritts im kontinuierlichen Überwachungsmodus

Sie können den progress in einem kontinuierlichen Überwachungsmodus in Echtzeit verwenden, indem Sie die Option -M (Überwachung) verwenden.

Geben Sie den folgenden Befehl in einem Terminalfenster ein:

 Fortschritt -M 

progress meldet, dass keine zu überwachenden Befehle ausgeführt werden. Sie kehren jedoch nicht zur Befehlszeile zurück. progress wartet, bis ein Befehl gestartet wird, den es überwachen kann. Es beginnt dann automatisch mit der Berichterstattung darüber.

Geben Sie in einem anderen Terminalfenster einen Befehl ein, der in der Liste der Befehle enthalten ist, die der Fortschritt überwachen kann.

Wir werden cat verwenden. Befehle, die zu schnell beendet sind, werden nicht mit progress registriert, daher listen wir den Inhalt einer sehr langen Textdatei auf.

 Katze Wörter.Seite 

Anzeige

Im Terminalfenster mit progress sehen Sie Statistiken für den cat Befehl, während er ausgeführt wird und auf den Abschluss hinarbeitet.

Wenn cat die Auflistung beendet hat, kehrt der Dateifortschritt in den progress zurück.

Jedes Mal, wenn einer der Befehle, über die er berichten kann, eine beträchtliche Aufgabe ausführt, wird der progress ihn automatisch überwachen und darüber berichten.

Das ist ziemlich ordentlich.

100% abgeschlossen

Machen Sie Schluss mit dem Rätselraten, sich zu fragen, wie ein lange laufender Befehl funktioniert, und machen Sie eine Pause von der Betrachtung Ihres Cursors mit pv und progress .

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