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

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 zum Abschluss.

Wenn Sie auf einem Langstreckenflug in einem Flugzeug ohne Videobildschirme in den Sitzlehnen sitzen, ist es nicht einfach zu wissen, wie weit Ihre Reise fortgeschritten ist. Sie wissen, wann Sie abgehauen sind. Sie wissen, wie lange der Flug voraussichtlich dauern wird. Aber woher wissen Sie, ob Sie im Plan, pünktlich oder weit hinter dem Zeitplan liegen? Wenn Sie den In-Flight-Film nicht sehen möchten, können Sie normalerweise Ihren Videobildschirm so umschalten, dass eine Karte mit der Position Ihres Flugzeugs 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 Bildschirm anfühlen. Sie haben keinen Hinweis darauf, ob alles in Ordnung ist oder ob der Prozess hängen geblieben ist oder wie nahe er dem Abschluss ist. Ein blinkender Cursor ist nicht sehr informativ.

Die Befehle pv und progress geben Ihnen einige Statistiken und ein wenig visuelles Feedback. Sie können sehen, wie nahe der Vorgang abgeschlossen ist. Das heißt, Sie erhalten eine ETA für Ihre laufenden Prozesse. Im Vergleich zum Anstarren auf einen Cursor gewinnt das zweifellos.

PV installieren

Sie müssen pv installieren.

Um pv auf Ubuntu zu installieren, verwenden Sie diesen Befehl:

sudo apt-get install pv

Um pv auf Fedora zu installieren, verwenden Sie diesen Befehl:

sudo dnf install pv

Um pv auf Manjaro zu installieren, verwenden Sie diesen Befehl:

sudo pacman -Syu pv

pv . verwenden

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

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

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

pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso |  zip > gparted.zip in einem Terminalfenster“ width=“646″ height=“77″ onload=“pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“  onerror=“this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“></p>
<p>Die Informationen, die uns pv gibt, können in der unteren Zeile des Displays angezeigt werden.</p>
<p> <img loading=

Von links nach rechts werden folgende Informationen angezeigt:

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

  So verwenden Sie den Linux-Befehl top (und verstehen Sie seine Ausgabe)

Kopieren einer Datei mit pv

Um eine Datei mit Ausgabe von pv zu kopieren, verwenden Sie diesen Befehl:

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

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

Mehrere Dateien mit pv . kopieren

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 help-files/ | pv | tar -x -C Documents/

Der Abschnitt tar -c help-files/ des Befehls weist tar an, (-c) ein Archiv der Dateien im Ordner help-files zu erstellen. Dies wird durch pv geleitet, damit 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 wird vor dem Entpacken in Dokumente 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 er wächst nicht von links nach rechts wie ein herkömmlicher Fortschrittsbalken. pv ist darauf beschränkt, die Informationen anzuzeigen, die es aus dem weitergeleiteten Prozess extrahieren kann.

Verwenden von pv und tar zum Erstellen eines Archivs

Das Kopieren von Dateien mit pv und tar hinterlässt keine Archivdatei. Mit tar wird eine Art „virtuelles“ Archiv 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 ist, wenn wir eine Archivdatei erstellen möchten?

Wir können weiterhin tar verwenden, um eine Archivdatei zu erstellen und einen Fortschrittsbericht von pv zu erhalten. Die bei 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 verwendet wird stdout, und seine Ausgabe in das Terminalfenster zu schreiben. Wir sehen diese Ausgabe nicht, weil sie durch pv geleitet wird.

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

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

tar -czf - ./help-files/ |  pv > help-files.tgz in einem Terminalfenster“ width=“646″ height=“57″ onload=“pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“  onerror=“this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“></p>
<div style=

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

< p>

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 abgeschlossenen Prozentsatz an. Dies ist der Fortschrittsbalken und die prozentuale Fertigstellung.
-t: Zeigt die verstrichene Zeit an.
-e: Zeigt die ETA an.
-r: Zeigt die Datenübertragungsrate an.
-b: Anzeige der Byteanzahl (bisher übertragene Daten).
-n: Zeigt den Prozentsatz als ganze Zahl an. Dadurch wird der abgeschlossene Prozentsatz als ganzzahlige Zahl gedruckt, wobei jede neue Aktualisierung in einer neuen Zeile erfolgt.

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

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

tar -czf - ./help-files/ |  pv - p > help-files.tgz in einem Terminalfenster“ width=“646″ height=“57″ onload=“pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);“  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Dies schaltet alle anderen Anzeigeoptionen aus.  pv liefert nur das prozentuale abgeschlossene Element.</p>
<p>Da pv keine prozentuale abgeschlossene Zahl von tar erhält, wird der Fortschrittsbalken durch einen sich bewegenden Indikator ersetzt.  Es gibt keine Prozentzahl.</p>
<p><img loading=

Verwendung von PV mit WC

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

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

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

Installieren des progress-Befehls

Der Befehl progress gibt die gleiche Art von nützliche Informationen wie pv, aber es funktioniert mit einem bestimmten Satz von Linux-Befehlen.

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

sudo apt-get install progress

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

sudo dnf install progress

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

sudo pacman -Syu progress

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 arbeitet.

progress

Fortschritt mit Pipes verwenden

Es gibt zwei Techniken, die wir verwenden können, um den Fortschritt 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 Fortschritt überwachen kann, also verwenden wir tar.

  So geben Sie Linux-Befehle in eine Datei aus

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

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

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

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

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, dass ein zweiter Datensatz angezeigt wird. Dieser erste Datensatz ist für tar. Der zweite ist für gzip. tar ruft gzip auf, um die Komprimierung durchzuführen. Da gzip in der Liste der unterstützten Befehle enthalten ist, werden Fortschrittsberichte darüber angezeigt.

Verwenden des Fortschritts im kontinuierlichen Überwachungsmodus

Sie können den Fortschritt in einem kontinuierlichen Echtzeitüberwachungsmodus verwenden, indem Sie die Option -M (Monitor) verwenden.

Geben Sie den folgenden Befehl in ein Terminalfenster ein:

progress -M

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

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

Wir werden Katze benutzen. Befehle, die zu schnell beendet werden, werden nicht mit dem Fortschritt registriert, daher listen wir den Inhalt einer sehr langen Textdatei auf.

cat words.page

Im Terminalfenster mit dem Fortschritt darin 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 seinen Wartezustand zurück.

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

Das ist ziemlich ordentlich.

100% abgeschlossen

Machen Sie Schluss mit dem Rätselraten, wenn Sie sich fragen, wie sich ein Befehl mit langer Laufzeit verhält, und machen Sie eine Pause von der Betrachtung Ihres Cursors mit pv und progress .