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

Publicat: 2022-01-29
Terminalul Linux prompt pe un laptop
Fatmawati Achmad Zaenuri/Shutterstock.com

În loc să zburați orb, utilizați comenzile Linux pv și progress 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 progress 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ă pipe viewer. 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.

Publicitate

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 

Informațiile pe care ni le oferă pv pot fi văzute în linia de jos a afișajului.

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 unui fișier cu pv într-o fereastră de terminal

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 fișiere-ajutor/ | pv | tar -x -C Documente/ 

Publicitate

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 tar 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 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 face ca tar să folosească stdout și să scrie rezultatul său în fereastra terminalului. Nu vedem acea ieșire deoarece este transmisă prin pv .

Publicitate

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 

Obținem aceiași indicatori de progres ca înainte, iar fișierul de arhivă este creat pentru noi.

RELATE: Cum să comprimați și să extrageți fișiere folosind comanda tar pe Linux

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 : 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șează numărul de octeți (date transferate până acum).
  • -n : afișează 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 

Publicitate

Aceasta dezactivează toate celelalte opțiuni de afișare. pv furnizează numai elementul procentual completat.

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ă.

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 progress oferă același tip de informații utile ca pv , dar funcționează cu un set specific de comenzi Linux.

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

 sudo apt-get install progress 

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

 Progresul instalării sudo dnf 

Progresul instalării sudo dnf într-o văduvă de terminal

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

 sudo pacman -Syu progres 

Funcționează cu progresul comenzilor

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

 progres 

Utilizarea Progress With Pipes

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

Comanda tar se află în lista comenzilor acceptate pe care progress 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 progress și utilizăm opțiunea -m (monitorizare), astfel încât progress continuă să raporteze despre proces până la finalizare.

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

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

Publicitate

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ă progress asupra acestuia.

Utilizarea Progresului în modul Monitor continuu

Puteți utiliza progress î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:

 progres -M 

progress va raporta că nu există comenzi care rulează pentru monitorizare. Dar nu sunteți întors la linia de comandă. progress 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 cat . Comenzile care s-au terminat prea repede nu se vor înregistra cu progress , așa că vom enumera conținutul unui fișier text foarte lung.

 cuvinte de pisică.pagina 

Publicitate

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

Când cat termină listarea, progress 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ă, progress 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 progress .

LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști