Cum să monitorizați progresul comenzilor Linux (cu pv și progres)
Publicat: 2022-01-29 Î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.
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 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/
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
.
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
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
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.
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
Î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
.
Comenzi Linux | ||
Fișiere | tar · pv · cat · tac · chmod · grep · diff · sed · ar · om · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · tip · redenumire · zip · dezarhivare · montare · demontare · instalare · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm | |
Procese | alias · ecran · sus · frumos · renice · progres · strace · systemd · tmux · chsh · istoric · la · lot · gratuit · care · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · da · kill · sleep · sudo · su · time · groupadd · usermod · grupuri · lshw · shutdown · repornire · stop · poweroff · passwd · lscpu · crontab · data · bg · fg | |
Rețele | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
LEGATE: Cele mai bune laptopuri Linux pentru dezvoltatori și entuziaști