So überprüfen Sie den Fortschritt der Ausführung von Befehlen in Linux

Manchmal dauert das Kopieren einer großen Datei, beispielsweise eines Films oder eines Betriebssystemabbilds, mit dem Befehl cp je nach Systemauslastung länger als erwartet. Da der Fortschritt des Vorgangs nicht angezeigt wird, ist es schwierig zu verstehen, was genau passiert.
In solchen Szenarien kann ein Befehl wie cv eine große Hilfe sein, da er Sie nicht nur über den Fortschritt der Operation informiert, sondern auch die verbleibende Zeit anzeigen kann. In diesem Artikel besprechen wir den Befehl zusammen mit einigen nützlichen Beispielen.
Einführung
Der Befehl cv ist ein Dienstprogramm, das speziell nach Kernel-Dienstprogramme grundlegende Befehle wie cp, mv, dd, tar, cat und mehr, die derzeit auf Ihrem System ausgeführt werden, und zeigt deren Fortschritt in Prozent an. Obwohl es Linux-spezifisch ist, Mac OSX-Portierung ist ebenfalls verfügbar.
Herunterladen und Installieren
Um den Befehl cv herunterzuladen und zu installieren, gehen Sie zu seiner Github-Repository und laden Sie das Quellpaket herunter (der Name der heruntergeladenen Datei war in meinem Fall „cv-master.zip“). Wenn Sie fertig sind, extrahieren Sie die Dateien mit dem folgenden Befehl:
Wechseln Sie in das Verzeichnis „cv-master“ und führen Sie die folgenden Befehle aus, um das Paket zu erstellen und die Binärdatei zu installieren:
Bitte beachten Sie, dass der Befehl cv von der Bibliothek „ncurses“ abhängt. Sie müssen daher möglicherweise entsprechende Pakete installieren. Dies können Sie durch Ausführen des folgenden Befehls erledigen:
sudo apt-get installiere ncurses-devEin weiterer erwähnenswerter Punkt ist, dass die Binärdatei nach der Installation in „/usr/local/bin“ abgelegt wird. Stellen Sie also sicher, dass der Pfad zu Ihrer Systemumgebung hinzugefügt wird, da Ihre Shell den Befehl sonst beim Ausführen nicht finden kann. Eine Alternative wäre, Ihr aktuelles Verzeichnis in „/usr/local/bin“ zu ändern und den Befehl dann folgendermaßen auszuführen:
Verwendung
Hier sind einige Beispiele, wie dieser Befehl verwendet werden kann:
Notiz: Alle in diesem Artikel vorgestellten Beispiele wurden auf Ubuntu 14.04 getestet.
Ein einfaches Beispiel
Da der Befehl cv den Fortschritt anderer ausgeführter Befehle anzeigt, muss es einen Befehl geben, der lange genug ausgeführt wird, damit der Befehl cv alles anzeigen kann. Ich habe beispielsweise versucht, eine große Datei von meinem USB-Stick auf meine Linux-Box zu kopieren. Als der Befehl cp ausgeführt wurde, wechselte ich sofort zu einer anderen Shell-Registerkarte und führte den folgenden Befehl aus:
Der Befehl hat die folgende Ausgabe angezeigt:
Das erste Feld in der Ausgabe ist die PID des überwachten Befehls, gefolgt vom Befehl und dem Fortschritt in Prozent sowie Zahlen. Bemerkenswert ist, dass die erste Zeile in der Ausgabe des CV-Befehls (cat inactive/flushing/streaming/...) standardmäßig ist – ich habe den Code überprüft und festgestellt, dass die Zeile unter bestimmten Bedingungen gedruckt wird, die anscheinend immer erfüllt sind (wir können es vorerst ignorieren).
Wenn mehrere Befehle ausgeführt werden, zeigt der Befehl cv den Fortschritt aller Befehle an. Hier ist beispielsweise die Ausgabe mit zwei ausgeführten Befehlen:
Erhalten Sie einen geschätzten E/A-Durchsatz und eine geschätzte voraussichtliche Ankunftszeit
Es ist zwar nützlich, den Fortschritt eines Befehls zu kennen, aber noch praktischer ist es, wenn Sie andere Informationen wie die verbleibende Zeit oder die voraussichtliche Ankunftszeit erfahren. Dafür bietet der Befehl cv die Befehlszeilenoption -w.
Beispielsweise, wenn der folgende Befehl ausgeführt wurde:
die folgende Ausgabe wurde angezeigt:
[ 9287] cp /media/himanshu/F58B-9AA9/casper-rw 10,3 % (105,2 MiB / 1 GiB) 27,9 MiB/s eta 0:00:32Die letzten beiden Felder in der Ausgabe, die den geschätzten E/A-Durchsatz und die voraussichtliche voraussichtliche Ankunftszeit darstellen, bedeuten, dass der Kopiervorgang mit einer Geschwindigkeit von 27,9 MB pro Sekunde abläuft und 32 Sekunden dauert.
Den Befehl in einer Schleife wiederholen
Wenn Sie den Befehl cv verwenden, werden Sie feststellen, dass er in diesem Moment die Fortschrittsdetails anzeigt und dann beendet wird. Um sicherzustellen, dass cv nicht beendet wird, bis der überwachte Befehl beendet ist, verwenden Sie die Option -m.
Dadurch wird sichergestellt, dass der CV-Befehl in einer Schleife ausgeführt wird, während die überwachten Prozesse noch ausgeführt werden.
Abschluss
Der Befehl cv könnte für diejenigen von Vorteil sein, die mit der Übertragung großer Dateien oder anderen zeitaufwändigen Vorgängen auf der Linux-Befehlszeile zu tun haben. Da es sich um Open Source handelt, können Sie natürlich die Art und Weise ändern, wie es interagiert und funktioniert, indem Sie Änderungen an der Codebasis vornehmen, die recht klein und leicht verständlich ist.
Haben Sie schon einmal cv oder einen ähnlichen Befehl verwendet? Wie war Ihre Erfahrung? Teilen Sie Ihre Gedanken in den Kommentaren unten.
Schreibe einen Kommentar