Cum să monitorizați progresul comenzilor Linux (cu pv și progres)

În loc să zburați orb, utilizați comenzile Linux pv și progres pentru a urmări progresul unei comenzi. Aceste utilitare vă vor oferi bare de progres pentru comenzile care în mod normal nu au niciuna. Veți vedea și un timp estimat până la finalizare.

Dacă sunteți într-un zbor pe distanță lungă cu o aeronavă fără ecrane video în spătare, nu este ușor să știți cât de departe vă aflați călătoria. Știi când ai decolat. Știți cât de mult va dura zborul. Dar de unde știi dacă ești pe drumul cel bun, la timp sau cu mult întârziere? Dacă nu doriți să vizionați filmul în timpul zborului, de obicei puteți comuta ecranul video pentru a afișa o hartă cu poziția aeronavei pe ea. Obțineți și câteva statistici, cum ar fi ora estimată de sosire (ETA), ceea ce este grozav.

Lansarea unei comenzi din fereastra terminalului poate fi uneori simțită ca un zbor pe distanțe lungi fără un ecran video. Nu ai ce să dai vreo indicație dacă totul este bine sau dacă procesul s-a blocat și nici cât de aproape este de finalizare. Un cursor intermitent nu este foarte informativ.

Comenzile pv și progres vă oferă câteva statistici și puțin feedback vizual. Puteți vedea cât de aproape este procesul de finalizare. Aceasta înseamnă că obțineți un ETA pentru procesele dvs. de rulare. În comparație cu privirea la un cursor, asta câștigă mâinile în jos.

Instalarea pv

Trebuie să instalați pv.

Pentru a instala pv pe Ubuntu, utilizați această comandă:

sudo apt-get install pv

Pentru a instala pv pe Fedora, utilizați această comandă:

sudo dnf install pv

Pentru a instala pv pe Manjaro, utilizați această comandă:

sudo pacman -Syu pv

Folosind pv

pv înseamnă vizualizator de conducte. Tuburile trebuie să fie implicate în comandă undeva. Iată un exemplu în care trimitem o imagine ISO prin zip pentru a crea un fișier zip comprimat al ISO.

Pentru a încetini suficient de mult comenzile încât să poată fi realizată o captură de ecran, unele dintre fișierele din exemplele utilizate pentru acest articol au fost stocate pe un USB extern vechi, lent, numit 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 într-o fereastră de terminal” width=”646″ height=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Informațiile pe care ni le oferă pv pot fi văzute în linia de jos a afișajului.</p>
<p> <img loading=

De la stânga la dreapta, informațiile care sunt afișate sunt:

Datele transferate până acum.
Timpul scurs de departe.
Rata de transfer de date (debit).
O bară de progres și un procentaj completat.
Timpul estimat rămas înainte de finalizare (ETA).

Copierea unui fișier cu pv

Pentru a copia un fișier cu ieșire din pv, utilizați această comandă:

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

Primim un raport de progres pe măsură ce fișierul este copiat.

Copierea mai multor fișiere cu pv

Pentru a copia mai multe fișiere și foldere cu pv, trebuie să folosim un mic truc. Folosim tar pentru a muta fișierele pentru noi.

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

Porțiunea tar -c help-files/ a comenzii indică tar să creeze (-c) o arhivă a fișierelor din folderul help-files. Acesta este transmis prin pv, astfel încât să obținem o afișare a progresului. Este apoi introdus înapoi în gudron pentru ultima parte a comenzii. Arhiva este extrasă (-x) și directorul este schimbat (-C) în Documente înainte de extragere.

Deci, fișierele și folderele care se află în fișierele de ajutor sunt copiate în folderul Documente, cu un afișaj de progres.

Ieșirea este ușor diferită de data aceasta.

Nu primim ETA. Bara de progres afișează acum un indicator de mișcare. Arată că procesul este activ, dar nu crește de la stânga la dreapta ca o bară de progres tradițională. pv se limitează la afișarea informațiilor pe care le poate extrage din procesul care este transmis.

Folosind pv și tar pentru a crea o arhivă

Copierea fișierelor cu pv și tar nu ne lasă cu un fișier de arhivă. Un fel de arhivă „virtuală” este creată de tar, care este alimentată direct înapoi în tar pentru a extrage fișierele. Dacă obiectivul nostru este să copiam fișiere, asta este îndeplinit. Dar dacă vrem să creăm un fișier de arhivă?

Putem folosi în continuare tar pentru a crea un fișier de arhivă și a obține un raport de progres de la pv. Opțiunile utilizate cu tar sunt -c (creați arhiva), -z (comprimați cu gzip) și -f (numele fișierului arhivei).

Rețineți că folosim – ca nume de fișier, ceea ce determină utilizarea tar stdout, și pentru a scrie rezultatul său în fereastra terminalului. Nu vedem acea ieșire deoarece este transmisă prin pv.

Numele real al arhivei va fi numele fișierului în care trimitem rezultatul de la pv. În acest caz, este „help-files.tgz”.

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

tar -czf - ./help-files/ |  pv > help-files.tgz într-o fereastră de terminal” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Avem aceiași indicatori de progres ca înainte și fișierul arhivă este creat pentru noi.</p>
<p> < p><img loading=

Opțiunile de afișare pv

Există o serie de opțiuni pe care le puteți utiliza cu pv pentru a modifica detaliile raportului său.

Dacă utilizați oricare dintre aceste opțiuni, toate celelalte opțiuni sunt dezactivate. Deci, dacă doriți să utilizați trei dintre opțiunile de afișare, atunci trebuie să specificați acele trei opțiuni.

Utilizarea pv fără opțiuni este la fel ca și utilizarea opțiunilor -pterb.

-p: se afișează procentajul complet. Aceasta este bara de progres și procentul completat.
-t: afișează timpul scurs.
-e: afișați ETA.
-r: afișează rata de transfer de date.
-b: afișați numărul de octeți (date transferate până acum).
-n: afișați procentul ca număr întreg. Acest lucru tipărește procentul completat ca o cifră întreagă, cu fiecare nouă actualizare pe o nouă linie.

Să repetăm ​​ultima comandă și să transmitem opțiunea -p (procent finalizat) către pv.

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

tar -czf - ./help-files/ |  pv - p > help-files.tgz într-o fereastră de terminal” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Acest lucru dezactivează toate celelalte opțiuni de afișare.  pv furnizează doar elementul procentual completat.</p>
<p>Deoarece pv nu primește o cifră procentual completată din tar, bara de progres este înlocuită cu un indicator în mișcare.  Nu există o cifră procentuală.</p>
<p><img loading=

Utilizarea pv Cu wc

Putem folosi pv pentru a trimite un fișier text (sau fișiere) în wc. wc va număra apoi întoarcerile, caracterele și cuvintele, iar pv ne va oferi un raport de progres.

Aici trimitem toate fișierele „.page” din directorul de fișiere de ajutor în wc.

Când se termină wc, putem vedea numărul de întoarceri de cărucior (linii), caractere și cuvinte din toate fișierele „.page” din folderul fișiere de ajutor.

Instalarea comenzii progres

Comanda progres oferă același tip de Informatii utile ca pv, dar funcționează cu un set specific de comenzi Linux.

Pentru a instala progresul în Ubuntu, utilizați această comandă:

sudo apt-get install progress

Pentru a instala progresul în Fedora, utilizați această comandă:

sudo dnf install progress

Pentru a instala progresul în Manjaro, utilizați această comandă:

sudo pacman -Syu progress

Funcționează cu progresul comenzilor

Tastând progres într-o fereastră de terminal și apăsând Enter vă va oferi o listă a comenzilor cu care funcționează progresul.

progress

Utilizarea Progress With Pipes

Există două tehnici pe care le putem folosi pentru a monitoriza comenzile cu progresul. Primul este să folosiți țevi.

Comanda tar se află în lista comenzilor acceptate pe care progresul le poate monitoriza, așa că să folosim tar.

Opțiunile pe care le vom folosi sunt opțiunile standard -c (creați arhivă), -z (comprimați cu gzip) și -f (nume fișier). Vom crea o arhivă comprimată cu tot ce se află în folderul de fișiere de ajutor, iar arhiva va fi numită „help.tgz”.

Îl transmitem în desfășurare și utilizăm opțiunea -m (monitorizare), astfel încât progresul continuă să raporteze despre proces până la finalizare.

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

Fereastra terminalului va afișa progresul comenzii tar pe măsură ce creează arhiva.

Pe măsură ce fiecare fișier este procesat, acesta este listat, cu următoarele informații:

ID-ul procesului.
Numele procesului.
Procent finalizat.
Datele prelucrate și dimensiunea totală a fișierului.
Rata datelor (debit).
Timp rămas estimat (ETA).

S-ar putea să fii surprins să vezi că apare un al doilea set de date. Acest prim set de date este pentru tar. Al doilea este pentru gzip. tar apelează gzip pentru a efectua compresia. Deoarece gzip se află în lista comenzilor acceptate, raportează progresul asupra acestuia.

Utilizarea Progresului în modul Monitor continuu

Puteți utiliza progresul într-un mod de monitorizare continuă în timp real utilizând opțiunea -M (monitor).

Tastați următoarea comandă într-o fereastră de terminal:

progress -M

progresul va raporta că nu există comenzi care rulează pentru monitorizare. Dar nu sunteți întors la linia de comandă. progresul așteaptă până când pornește o comandă pe care o poate monitoriza. Apoi va începe automat să raporteze despre el.

Într-o altă fereastră de terminal, tastați o comandă care se află în lista de comenzi pe care progresul le poate monitoriza.

Vom folosi pisica. Comenzile terminate prea repede nu se vor înregistra cu progresul, așa că vom enumera conținutul unui fișier text foarte lung.

cat words.page

În fereastra terminalului cu progres, veți vedea statistici pentru comanda cat pe măsură ce se execută și lucrează spre finalizare.

Când cat termină listarea, progresul fișierului revine la starea de așteptare.

De fiecare dată când una dintre comenzile pe care le poate raporta îndeplinește o sarcină considerabilă, progresul o va monitoriza automat și va raporta despre aceasta.

E destul de îngrijit.

100% finalizat

Eliminați ghiciturile din a vă întreba cum merge o comandă de lungă durată și luați o pauză de la contemplarea cursorului cu pv și progres .