Πώς να παρακολουθείτε την πρόοδο των εντολών Linux (με pv και πρόοδο)

Αντί να πετάτε στα τυφλά, χρησιμοποιήστε τις εντολές pv και προόδου Linux για να παρακολουθείτε την πρόοδο μιας εντολής. Αυτά τα βοηθητικά προγράμματα θα σας δώσουν γραμμές προόδου για εντολές που συνήθως δεν έχουν καμία. Θα δείτε επίσης έναν εκτιμώμενο χρόνο μέχρι την ολοκλήρωση.

Εάν βρίσκεστε σε πτήση μεγάλων αποστάσεων με αεροσκάφος χωρίς οθόνες βίντεο στις πλάτες των καθισμάτων, δεν είναι εύκολο να γνωρίζετε πόσο μακριά βρίσκεστε στο ταξίδι σας. Ξέρεις πότε απογειώθηκες. Ξέρετε πόσο καιρό αναμένεται να διαρκέσει η πτήση. Αλλά πώς ξέρετε εάν είστε σε καλό δρόμο, στην ώρα σας ή πολύ πίσω από το πρόγραμμα; Εάν δεν θέλετε να παρακολουθήσετε την ταινία κατά τη διάρκεια της πτήσης, μπορείτε συνήθως να αλλάξετε την οθόνη βίντεο για να εμφανιστεί ένας χάρτης με τη θέση του αεροσκάφους σας σε αυτήν. Λαμβάνετε επίσης ορισμένα στατιστικά στοιχεία, όπως μια αναμενόμενη ώρα άφιξης (ETA), η οποία είναι εξαιρετική.

Η εκκίνηση μιας εντολής από το παράθυρο του τερματικού μπορεί μερικές φορές να μοιάζει με πτήση μεγάλων αποστάσεων χωρίς οθόνη βίντεο. Δεν έχετε τίποτα να δώσετε καμία ένδειξη εάν όλα πάνε καλά ή αν η διαδικασία έχει κρεμάσει, ούτε πόσο κοντά βρίσκεται στην ολοκλήρωσή της. Ένας δρομέας που αναβοσβήνει δεν είναι πολύ κατατοπιστικός.

Οι εντολές pv και progress σας δίνουν μερικά στατιστικά στοιχεία και μια μικρή οπτική ανατροφοδότηση. Μπορείτε να δείτε πόσο κοντά είναι να ολοκληρωθεί η διαδικασία. Αυτό σημαίνει ότι λαμβάνετε ένα ETA για τις τρέχουσες διαδικασίες σας. Σε σύγκριση με το να κοιτάς τον κέρσορα, αυτό κερδίζει τα χέρια κάτω.

Εγκατάσταση pv

Πρέπει να εγκαταστήσετε pv.

Για να εγκαταστήσετε το pv στο Ubuntu χρησιμοποιήστε αυτήν την εντολή:

sudo apt-get install pv

Για να εγκαταστήσετε το pv στο Fedora χρησιμοποιήστε αυτήν την εντολή:

sudo dnf install pv

Για να εγκαταστήσετε το pv στο Manjaro χρησιμοποιήστε αυτήν την εντολή:

sudo pacman -Syu pv

Χρησιμοποιώντας pv

Το pv σημαίνει πρόγραμμα προβολής σωλήνων. Οι σωληνώσεις πρέπει να εμπλακούν κάπου στην εντολή. Ακολουθεί ένα παράδειγμα όπου περνάμε μια εικόνα ISO μέσω zip για να δημιουργήσουμε ένα συμπιεσμένο αρχείο zip του ISO.

Για να επιβραδυνθούν αρκετά οι εντολές ώστε να μπορεί να ληφθεί ένα στιγμιότυπο οθόνης, ορισμένα από τα αρχεία στα παραδείγματα που χρησιμοποιούνται για αυτό το άρθρο αποθηκεύτηκαν σε ένα παλιό, αργό, εξωτερικό USB που ονομάζεται SILVERXHD.

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 σε παράθυρο τερματικού” width=”646″ ύψος=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Οι πληροφορίες που μας δίνει το pv φαίνονται στην κάτω γραμμή της οθόνης.

Από αριστερά προς τα δεξιά, οι πληροφορίες που εμφανίζονται είναι:

Τα δεδομένα που έχουν μεταφερθεί μέχρι στιγμής.
Ο χρόνος που πέρασε πολύ.
Ο ρυθμός μεταφοράς δεδομένων (διακίνηση).
Μια γραμμή προόδου και ένα ποσοστό συμπληρωμένου αριθμού.
Ο εκτιμώμενος χρόνος που απομένει πριν την ολοκλήρωση (ETA).

Αντιγραφή αρχείου με pv

Για να αντιγράψετε ένα αρχείο με έξοδο από το pv, χρησιμοποιήστε αυτήν την εντολή:

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

Λαμβάνουμε μια αναφορά προόδου καθώς το αρχείο αντιγράφεται.

Αντιγραφή πολλών αρχείων με pv

Για να αντιγράψουμε πολλά αρχεία και φακέλους με pv πρέπει να χρησιμοποιήσουμε ένα μικρό κόλπο. Χρησιμοποιούμε tar για να μετακινήσουμε τα αρχεία για εμάς.

tar -c help-files/ | pv | tar -x -C Documents/

Το τμήμα tar -c help-files/ της εντολής δίνει εντολή στο tar να δημιουργήσει (-c) ένα αρχείο των αρχείων στο φάκελο help-files. Αυτό διοχετεύεται μέσω pv έτσι ώστε να έχουμε μια εμφάνιση της προόδου. Στη συνέχεια διοχετεύεται πίσω στην πίσσα για το τελευταίο τμήμα της εντολής. Το αρχείο εξάγεται (-x) και ο κατάλογος αλλάζει (-C) σε Έγγραφα πριν από την εξαγωγή.

Έτσι, τα αρχεία και οι φάκελοι που βρίσκονται στα αρχεία βοήθειας αντιγράφονται στο φάκελο Έγγραφα, με μια οθόνη προόδου.

Η έξοδος είναι ελαφρώς διαφορετική αυτή τη φορά.

Δεν λαμβάνουμε ΕΤΑ. Η γραμμή προόδου εμφανίζει τώρα μια κινούμενη ένδειξη. Δείχνει ότι η διαδικασία είναι ενεργή, αλλά δεν αναπτύσσεται από αριστερά προς τα δεξιά όπως μια παραδοσιακή γραμμή προόδου. Το pv περιορίζεται στην εμφάνιση των πληροφοριών που μπορεί να εξαγάγει από τη διαδικασία που διοχετεύεται.

Χρήση pv και tar για τη δημιουργία αρχείου

Η αντιγραφή αρχείων με pv και tar δεν μας αφήνει αρχείο αρχειοθέτησης. Ένα είδος «εικονικού» αρχείου δημιουργείται από το tar, το οποίο τροφοδοτείται κατευθείαν στο tar για να εξαγάγει τα αρχεία. Εάν ο στόχος μας είναι να αντιγράψουμε αρχεία, αυτό επιτυγχάνεται. Τι γίνεται όμως αν θέλουμε να δημιουργήσουμε ένα αρχείο αρχειοθέτησης;

Μπορούμε ακόμα να χρησιμοποιήσουμε το tar για να δημιουργήσουμε ένα αρχείο αρχειοθέτησης και να λάβουμε μια αναφορά προόδου από το pv. Οι επιλογές που χρησιμοποιούνται με το tar είναι -c (δημιουργία αρχείου), -z (συμπίεση με gzip) και -f (όνομα αρχείου του αρχείου).

Σημειώστε ότι χρησιμοποιούμε – ως όνομα αρχείου, το οποίο προκαλεί τη χρήση του tar stdoutκαι για να γράψετε την έξοδο του στο παράθυρο του τερματικού. Δεν βλέπουμε αυτή την έξοδο επειδή διοχετεύεται μέσω pv.

  4 καλύτερες εφαρμογές ανάγνωσης ροών RSS για Linux

Το πραγματικό όνομα του αρχείου θα είναι το όνομα αρχείου στο οποίο διοχετεύουμε την έξοδο από το pv. Σε αυτήν την περίπτωση, είναι “help-files.tgz”.

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

tar -czf - ./help-files/ |  pv > help-files.tgz σε παράθυρο τερματικού” width=”646″ ύψος=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Λαμβάνουμε τους ίδιους δείκτες προόδου με πριν και το αρχείο αρχειοθέτησης δημιουργείται για εμάς.</p>
<p> p><img loading=

Οι επιλογές εμφάνισης pv

Υπάρχουν πολλές επιλογές που μπορείτε να χρησιμοποιήσετε με το pv για να αλλάξετε τις λεπτομέρειες της αναφοράς του.

Εάν χρησιμοποιήσετε οποιαδήποτε από αυτές τις επιλογές, όλες οι άλλες επιλογές απενεργοποιούνται. Επομένως, εάν θέλετε να έχετε τρεις από τις επιλογές εμφάνισης σε χρήση, τότε πρέπει να καθορίσετε αυτές τις τρεις επιλογές.

Η χρήση pv χωρίς καμία επιλογή είναι η ίδια με τη χρήση των επιλογών -pterb.

-p: εμφανίζει το ποσοστό ολοκλήρωσης. Αυτή είναι η γραμμή προόδου και το ποσοστό συμπληρωμένου αριθμού.
-t: εμφάνιση του χρόνου που έχει παρέλθει.
-e: εμφανίζει το ETA.
-r: εμφάνιση του ρυθμού μεταφοράς δεδομένων.
-b: εμφάνιση του αριθμού byte (δεδομένα που έχουν μεταφερθεί μέχρι στιγμής).
-n: εμφανίζει το ποσοστό ως ακέραιο. Αυτό εκτυπώνει το ποσοστό που ολοκληρώθηκε ως ακέραιος αριθμός, με κάθε νέα ενημέρωση σε μια νέα γραμμή.

Ας επαναλάβουμε την τελευταία εντολή και ας περάσουμε την επιλογή -p (ποσοστό ολοκλήρωσης) στο pv.

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

tar -czf - ./help-files/ |  pv - p > help-files.tgz σε παράθυρο τερματικού” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Αυτό απενεργοποιεί όλες τις άλλες επιλογές εμφάνισης.  Το pv παρέχει μόνο το στοιχείο ποσοστιαίας συμπλήρωσης.</p>
<p>Επειδή το pv δεν λαμβάνει ένα ποσοστό συμπληρωμένου ποσοστού από το tar, η γραμμή προόδου αντικαθίσταται από μια κινούμενη ένδειξη.  Δεν υπάρχει ποσοστό.</p>
<p><img loading=

Χρήση pv με wc

Μπορούμε να χρησιμοποιήσουμε το pv για να διοχετεύσουμε ένα αρχείο κειμένου (ή αρχεία) στο wc. Στη συνέχεια, το wc θα μετρήσει τις επιστροφές μεταφοράς, τους χαρακτήρες και τις λέξεις και το pv θα μας δώσει μια αναφορά προόδου.

Εδώ εισάγουμε όλα τα αρχεία “.page” στον κατάλογο help-files στο wc.

Όταν ολοκληρωθεί το wc, μπορούμε να δούμε τον αριθμό των επιστροφών μεταφοράς (γραμμές), χαρακτήρες και λέξεις από όλα τα αρχεία «.page» στο φάκελο help-files.

Εγκατάσταση της εντολής προόδου

Η εντολή προόδου δίνει το ίδιο είδος ΧΡΗΣΙΜΕΣ ΠΛΗΡΟΦΟΡΙΕΣ ως pv, αλλά λειτουργεί με ένα συγκεκριμένο σύνολο εντολών Linux.

Για να εγκαταστήσετε την πρόοδο στο Ubuntu, χρησιμοποιήστε αυτήν την εντολή:

sudo apt-get install progress

Για να εγκαταστήσετε την πρόοδο στο Fedora, χρησιμοποιήστε αυτήν την εντολή:

sudo dnf install progress

Για να εγκαταστήσετε την πρόοδο στο Manjaro, χρησιμοποιήστε αυτήν την εντολή:

sudo pacman -Syu progress

Η πρόοδος των εντολών λειτουργεί με

Πληκτρολογώντας την πρόοδο σε ένα παράθυρο τερματικού και πατώντας το Enter θα εμφανιστεί μια λίστα με τις εντολές με τις οποίες λειτουργεί η πρόοδος.

progress

Χρήση του Progress With Pipes

Υπάρχουν δύο τεχνικές που μπορούμε να χρησιμοποιήσουμε για να παρακολουθούμε τις εντολές με την πρόοδο. Το πρώτο είναι να χρησιμοποιήσετε σωλήνες.

  Πώς να αλλάξετε αυτόματα την ταπετσαρία στο Linux

Η εντολή tar βρίσκεται στη λίστα των υποστηριζόμενων εντολών που μπορεί να παρακολουθεί η πρόοδος, οπότε ας χρησιμοποιήσουμε το tar.

Οι επιλογές που θα χρησιμοποιήσουμε είναι οι τυπικές επιλογές -c (δημιουργία αρχείου), -z (συμπίεση με gzip) και -f (όνομα αρχείου). Θα δημιουργήσουμε ένα συμπιεσμένο αρχείο με τα πάντα στο φάκελο help-files και το αρχείο θα ονομάζεται “help.tgz”.

Το δρομολογούμε σε εξέλιξη και χρησιμοποιούμε την επιλογή -m (οθόνη), ώστε η πρόοδος να συνεχίζει να αναφέρει τη διαδικασία μέχρι να ολοκληρωθεί.

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

Το παράθυρο τερματικού θα εμφανίσει την πρόοδο της εντολής tar καθώς δημιουργεί το αρχείο.

Καθώς κάθε αρχείο υποβάλλεται σε επεξεργασία, παρατίθεται με τις ακόλουθες πληροφορίες:

Το αναγνωριστικό της διαδικασίας.
Το όνομα της διαδικασίας.
Ποσοστό συμπλήρωσης.
Επεξεργασμένα δεδομένα και συνολικό μέγεθος αρχείου.
Ρυθμός δεδομένων (διακίνηση).
Εκτιμώμενος χρόνος που απομένει (ETA).

Μπορεί να εκπλαγείτε βλέποντας να εμφανίζεται ένα δεύτερο σύνολο δεδομένων. Αυτό το πρώτο σύνολο δεδομένων αφορά την πίσσα. Το δεύτερο είναι για gzip. Το tar καλεί το gzip για να εκτελέσει τη συμπίεση. Επειδή το gzip βρίσκεται στη λίστα των υποστηριζόμενων εντολών, αναφέρει την πρόοδο για αυτό.

Χρήση του Progress σε λειτουργία συνεχούς παρακολούθησης

Μπορείτε να χρησιμοποιήσετε την πρόοδο σε λειτουργία συνεχούς παρακολούθησης σε πραγματικό χρόνο χρησιμοποιώντας την επιλογή -M (οθόνη).

Πληκτρολογήστε την ακόλουθη εντολή σε ένα παράθυρο τερματικού:

progress -M

Η πρόοδος θα αναφέρει ότι δεν εκτελούνται εντολές για παρακολούθηση. Αλλά δεν επιστρέφετε στη γραμμή εντολών. Η πρόοδος περιμένει μέχρι να ξεκινήσει μια εντολή που μπορεί να παρακολουθήσει. Στη συνέχεια, θα ξεκινήσει αυτόματα η αναφορά για αυτό.

Σε ένα άλλο παράθυρο τερματικού, πληκτρολογήστε μια εντολή που βρίσκεται στη λίστα εντολών που μπορεί να παρακολουθήσει η πρόοδος.

Θα χρησιμοποιήσουμε τη γάτα. Οι εντολές που τελειώνουν πολύ γρήγορα δεν θα εγγραφούν με την πρόοδο, επομένως θα παραθέσουμε τα περιεχόμενα ενός πολύ μεγάλου αρχείου κειμένου.

cat words.page

Στο παράθυρο τερματικού με πρόοδο σε αυτό, θα δείτε στατιστικά στοιχεία για την εντολή cat καθώς εκτελείται και ολοκληρώνεται.

Όταν η cat ολοκληρώσει τη λίστα, η πρόοδος του αρχείου επιστρέφει στην κατάσταση αναμονής.

Κάθε φορά που μία από τις εντολές για τις οποίες μπορεί να αναφέρει εκτελεί μια σημαντική εργασία, η πρόοδος θα την παρακολουθεί αυτόματα και θα την αναφέρει.

Αυτό είναι αρκετά προσεγμένο.

Ολοκληρώθηκε 100%.

Αφαιρέστε τις εικασίες από το να αναρωτιέστε πώς λειτουργεί μια μακροχρόνια εντολή και κάντε ένα διάλειμμα από το να σκεφτείτε τον κέρσορα σας με το pv και την πρόοδο .