So überwachen Sie den Fortschritt von Linux-Befehlen (mit pv und progress)
Veröffentlicht: 2022-01-29 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.
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 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/
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.
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
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
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.
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
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
.
Linux-Befehle | ||
Dateien | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konvertieren · rclone · shred · srm | |
Prozesse | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Vernetzung | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
RELATED: Beste Linux-Laptops für Entwickler und Enthusiasten