În loc să navighezi în necunoscut, folosește instrumentele Linux pv
și progress
pentru a monitoriza evoluția comenzilor. Aceste utilitare îți vor oferi bare de progres chiar și pentru comenzile care în mod normal nu afișează așa ceva, permițându-ți să vezi și timpul estimat până la finalizare.
Într-o călătorie lungă cu avionul, fără ecrane video în scaune, este dificil să știi cât mai ai de parcurs. Știi când ai decolat și durata totală a zborului. Însă, cum afli dacă ești pe traiectoria corectă, la timp sau cu întârziere? De obicei, poți schimba ecranul video pentru a afișa o hartă cu poziția aeronavei și statistici precum ora estimată de sosire (ETA), informații extrem de utile.
Lansarea unei comenzi în terminal poate fi uneori ca un zbor lung fără ecrane video. Nu ai niciun indiciu dacă totul decurge normal sau dacă procesul s-a blocat. Nici măcar nu știi cât de aproape ești de finalizare. Un cursor care clipește nu oferă prea multe informații.
Comenzile pv
și progress
îți oferă statistici și feedback vizual, arătându-ți cât de aproape este procesul de finalizare, oferindu-ți un ETA pentru procesele tale. Acesta este un avantaj semnificativ comparativ cu simpla privire la un cursor.
Instalarea pv
Pentru a începe, trebuie să instalezi pv
.
Pentru Ubuntu, folosește această comandă:
sudo apt-get install pv
Pentru Fedora, utilizează:
sudo dnf install pv
Pentru Manjaro, folosește:
sudo pacman -Syu pv
Utilizarea pv
pv
înseamnă „pipe viewer” (vizualizator de pipe). Este necesar ca pipe-urile să fie implicate în comandă. Iată un exemplu în care trimitem o imagine ISO prin zip pentru a crea un fișier zip comprimat al ISO.
Pentru a încetini comenzile suficient pentru a realiza o captură de ecran, unele fișiere folosite în exemple au fost stocate pe un USB extern vechi, numit SILVERXHD.
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip
Informațiile oferite de pv
sunt afișate în linia de jos a ecranului.
De la stânga la dreapta, informațiile afișate sunt:
Datele transferate până acum.
Timpul scurs.
Rata de transfer de date (viteza de transfer).
O bară de progres și procentul de finalizare.
Timpul estimat rămas (ETA).
Copierea unui fișier cu pv
Pentru a copia un fișier folosind pv
, folosește această comandă:
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso
Vei primi 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 directoare cu pv
, trebuie să folosim un mic artificiu. Utilizăm tar
pentru a muta fișierele pentru noi.
tar -c help-files/ | pv | tar -x -C Documents/
Partea tar -c help-files/
a comenzii indică tar
să creeze (-c) o arhivă a fișierelor din directorul help-files
. Aceasta este trimisă prin pv
pentru a afișa progresul. Apoi, este reintrodusă în tar
pentru ultima parte a comenzii. Arhiva este extrasă (-x) și directorul este schimbat (-C) în Documents
înainte de extragere.
Astfel, fișierele și folderele din help-files
sunt copiate în folderul Documents
, cu un indicator de progres.
Afisajul este puțin diferit de data aceasta.
Nu primim un ETA. Bara de progres afișează un indicator de mișcare. Acesta 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 informațiile pe care le poate extrage din procesul transmis.
Utilizarea pv și tar pentru a crea o arhivă
Copierea fișierelor cu pv
și tar
nu ne oferă un fișier arhivă. Se creează un fel de arhivă „virtuală” care este alimentată direct înapoi în tar
pentru a extrage fișierele. Dacă scopul este să copiem fișiere, acest lucru este îndeplinit. Dar dacă vrem să creăm un fișier arhivă?
Putem folosi în continuare tar
pentru a crea un fișier arhivă și a primi un raport de progres de la pv
. Opțiunile utilizate cu tar
sunt -c
(creează arhiva), -z
(comprimă cu gzip) și -f
(numele fișierului arhivei).
Reține că folosim -
ca nume de fișier, ceea ce indică utilizarea de către tar
a fluxului standard de ieșire (stdout) și pentru a scrie rezultatul în terminal. Nu vedem această ieșire deoarece este trimisă 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
Avem aceiași indicatori de progres ca înainte, iar fișierul arhivă este creat.
Opțiunile de afișare pv
Există diverse opțiuni pe care le poți utiliza cu pv
pentru a modifica detaliile raportului său.
Dacă utilizezi oricare dintre aceste opțiuni, toate celelalte opțiuni sunt dezactivate. Astfel, dacă vrei să utilizezi trei dintre opțiunile de afișare, trebuie să specifici acele trei opțiuni.
Utilizarea pv
fără opțiuni este identică cu utilizarea opțiunilor -pterb
.
-p
: afișează procentajul de finalizare (bara de progres și procentul).-t
: afișează timpul scurs.-e
: afișează ETA.-r
: afișează rata de transfer de date.-b
: afișează numărul de octeți transferați (datele transferate până acum).-n
: afișează procentul ca număr întreg, cu fiecare actualizare pe o linie nouă.
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
Aceasta dezactivează toate celelalte opțiuni de afișare. pv
furnizează doar elementul procentual de finalizare.
Deoarece pv
nu primește o cifră procentuală de finalizare de la tar
, bara de progres este înlocuită cu un indicator de mișcare. Nu există un procent specific.
Utilizarea pv cu wc
Putem folosi pv
pentru a trimite un fișier text (sau fișiere) în wc
. wc
va număra apoi rândurile, caracterele și cuvintele, iar pv
ne va oferi un raport de progres.
Aici trimitem toate fișierele .page
din directorul help-files
către wc
.
find help-files/ -name "*.page" | pv | xargs wc
Când se termină wc
, vom vedea numărul de rânduri, caractere și cuvinte din toate fișierele .page
din directorul help-files
.
Instalarea comenzii progress
Comanda progress
oferă același tip de informații utile ca și pv
, dar funcționează cu un set specific de comenzi Linux.
Pentru a instala progress
în Ubuntu, folosește:
sudo apt-get install progress
Pentru a instala progress
în Fedora, folosește:
sudo dnf install progress
Pentru a instala progress
în Manjaro, folosește:
sudo pacman -Syu progress
Comenzi compatibile cu progress
Dacă scrii progress
în terminal și apeși Enter, vei vedea o listă a comenzilor cu care progress
funcționează.
progress
Utilizarea Progress cu Pipe-uri
Există două metode de monitorizare a comenzilor cu progress
. Prima este utilizarea pipe-urilor.
Comanda tar
se află în lista comenzilor acceptate de progress
, așa că vom folosi tar
.
Opțiunile folosite sunt cele standard: -c
(creează arhivă), -z
(comprimă cu gzip) și -f
(nume fișier). Vom crea o arhivă comprimată cu tot ce se află în directorul help-files
, iar arhiva se va numi help.tgz
.
Trimiterea output-ului spre progress
se face cu opțiunea -m
(monitorizare), astfel încât progress
va raporta continuu despre proces până la finalizare.
tar -czf help.tgz ./help-files/ | progress -m
Terminalul 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 de transfer de date.
- Timpul rămas estimat (ETA).
S-ar putea să fii surprins să vezi un al doilea set de date. Primul set este pentru tar
, iar al doilea pentru gzip
. tar
apelează gzip
pentru a efectua compresia. Deoarece gzip
se află în lista comenzilor acceptate, progress
raportează despre el.
Utilizarea Progresului în Modul Monitor Continuu
Poți utiliza progress
într-un mod de monitorizare continuă în timp real utilizând opțiunea -M
(monitor).
Scrie următoarea comandă în terminal:
progress -M
progress
va raporta că nu există comenzi în execuție pentru a fi monitorizate, dar nu te va returna la linia de comandă. progress
așteaptă până când începe o comandă pe care o poate monitoriza. Apoi va începe să raporteze automat despre ea.
Într-o altă fereastră de terminal, scrie o comandă care se află în lista comenzilor pe care progress
le poate monitoriza.
Vom folosi cat
. Comenzile care se termină prea repede nu vor fi înregistrate de progress
, așa că vom afișa conținutul unui fișier text foarte lung.
cat words.page
În fereastra terminalului cu progress
, vei vedea statistici pentru comanda cat
în timp ce aceasta se execută și se apropie de finalizare.
Când cat
termină de afișat, progress
revine la starea de așteptare.
De fiecare dată când una dintre comenzile pe care le poate raporta îndeplinește o sarcină importantă, progress
o va monitoriza automat și va raporta despre aceasta.
Este destul de util.
100% Finalizat
Înlătură incertitudinea cu privire la modul în care decurge o comandă de lungă durată și ia o pauză de la contemplarea cursorului cu pv
și progress
.