Verwenden Sie den Pv-Befehl, um den Datenfortschritt unter Linux zu überwachen
Stellen Sie sich dieses Szenario vor. Sie versuchen, über die Befehlszeile eine große Datei von einem Verzeichnis in ein anderes oder von einem System auf ein anderes zu kopieren. Wie Sie wahrscheinlich wissen, werden Sie keinen Hinweis auf eine Kopieraufgabe sehen, wenn Sie den Befehl „cp“ verwenden. Sie sehen lediglich einen leeren Bildschirm. Sie können nicht sicher sein, ob der Kopiervorgang ausgeführt wird oder nicht, bis der Kopiervorgang abgeschlossen ist. In solchen Fällen können Sie den Befehl pv verwenden, um den Fortschritt der Daten zu überwachen. Der Befehl pv, Akronym für pipe viewer, ermöglicht es einem Benutzer, den Fortschritt von Daten durch eine Pipeline zu sehen, indem er die folgenden Informationen angibt:
- insgesamt verstrichene Zeit,
- Prozentsatz abgeschlossen (mit Fortschrittsbalken),
- aktuelle Durchsatzrate,
- insgesamt übertragene Daten,
- und voraussichtliche Ankunftszeit.
In diesem kurzen Tutorial erfahren Sie, wie und wo Sie den Befehl pv verwenden, um den Fortschritt von Daten in Unix-ähnlichen Systemen zu überwachen.
Installieren Sie pv unter Linux
Die meisten modernen Linux-Distributionen sind mit dem pv-Befehl vorinstalliert. Für den Fall, dass es noch nicht installiert ist, können Sie es installieren, indem Sie je nach verwendeter Linux-Distribution den folgenden Befehl von Ihrem Terminal aus ausführen.
Auf Arch Linux, Antergos, Manjaro Linux:
sudo pacman -S pv
Auf RHEL, CentOS, Fedora:
sudo yum install pv
Oder,
sudo dnf install pv
Unter Debian, Linux Mint, Ubuntu:
sudo apt-get install pv
Unter SUSE openSUSE:
sudo zypper in pv
Jetzt haben wir PV installiert. Lassen Sie mich Ihnen einige Beispiele zeigen.
Überwachen Sie den Fortschritt von Daten durch eine Pipe mit dem Befehl „pv“.
Sehen Sie sich die Ausgabe des folgenden Befehls an:
cp CentOS7.iso Downloads/
Dieser Befehl kopiert das ISO-Image von CentOS 7 in das Verzeichnis „Downloads“ in meinem lokalen System. Wie Sie in der obigen Ausgabe sehen können, wird kein Fortschrittsbalken angezeigt. Sie sehen nur, dass der Cursor blinkt. Wir wissen nicht, wie lange der Kopiervorgang dauern wird. Dies kann manchmal ärgerlich sein, da wir keine Anzeichen dafür sehen, wann dieser Befehl ausgeführt wird. Hier kommt der pv-Befehl ins Spiel. Der pv-Befehl zeigt Ihnen den Fortschritt von Linux-Befehlen und zeigt Ihnen an, wann der Linux-Befehl abgeschlossen ist. Sie können also das Terminal verlassen und andere Aufgaben erledigen und zurückkommen, wenn die Aufgabe erledigt ist.
Machen wir nun dasselbe mit dem Pipe Viewer (pv) und sehen wir uns die Ausgabe an.
pv CentOS7.iso > Downloads/centos.iso
Sehen Sie, verstehen Sie den Unterschied? Wie ich bereits sagte, zeigt der pv-Befehl die insgesamt verstrichene Zeit, den abgeschlossenen Prozentsatz (mit Fortschrittsbalken), die aktuelle Durchsatzrate, die insgesamt übertragenen Daten und die voraussichtliche Ankunftszeit an.
Lassen Sie mich Ihnen noch einige Beispiele nennen.
Wir können die Datenübertragungsrate mit dem Schalter -L begrenzen, wie im folgenden Beispiel gezeigt.
pv -L 2m CentOS7.iso > Downloads/centos.iso
Der obige Befehl begrenzt die Datenübertragungsrate auf 2 MB pro Sekunde. Schauen Sie sich die folgende Ausgabe an.
Wenn Sie mehrere Dateien oder Verzeichnisse haben, können Sie pv mit dem tar-Befehl verwenden, wie unten gezeigt:
tar c Notebooks/ | pv | tar x -C Documents/
Der obige Befehl komprimiert das Verzeichnis „Notebooks“, kopiert es in das Verzeichnis „Dokumente“ und extrahiert schließlich den Inhalt.
Hier ist ein weiteres Beispiel. Dieser Befehl erstellt ein Archiv der CentOS7.iso-Datei und speichert es im aktuellen Arbeitsverzeichnis.
pv CentOS7.iso | zip > centos.zip
Sie können pv auch mit dem dd-Befehl verwenden, um Dateien wie unten beschrieben zwischen Verzeichnissen zu kopieren. Dieser Befehl kopiert die Datei CentOS7.iso aus dem aktuellen Verzeichnis in das Download-Verzeichnis.
dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso
Ein weiterer nützlicher Befehl zur Anzeige des Datenfortschritts ist dialog. Wir können es zusammen mit dem Befehl pv verwenden, um den Fortschritt der Daten wie unten dargestellt anzuzeigen.
tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0
Beispielausgabe:
Weitere Einzelheiten finden Sie in den Manpages.
man pv
Sehen Sie sich auch unsere vorherige Anleitung zum schnellen Übertragen großer Dateien zwischen zwei Remote-Systemen über das Netzwerk mithilfe der Befehle netcat, tar und pv unter Linux an Unix-Betriebssysteme.
- So übertragen Sie große Dateien schnell über das Netzwerk unter Linux und Unix
Update:
Der Fortschrittsbalken für die Befehle „cp“ und „mv“ kann einfach mit einem Patch namens „Advanced Copy“ hinzugefügt werden. Weitere Informationen finden Sie unter folgendem Link.
- Erweitertes Kopieren – Fortschrittsbalken zu cp- und mv-Befehlen unter Linux hinzufügen