Ukoliko ne želite da nagađate i da se pitate da li komanda koju ste pokrenuli radi kako treba, koristite `pv` i `progress` komande u Linuxu. Ovi alati će vam pružiti detaljan uvid u tok komande, uključujući i traku napretka za one komande koje je inače ne prikazuju. Takođe ćete imati procenjeno vreme do završetka izvršavanja.
Zamislite da ste na dugom letu avionom, bez video ekrana na sedištima. Teško je znati koliko ste prešli od početne tačke. Znate kada ste poleteli i koliko bi otprilike let trebalo da traje, ali kako da budete sigurni da letite po planu ili kasnite? Naravno, možete uključiti prikaz mape sa pozicijom aviona i dobiti informacije kao što je očekivano vreme dolaska (ETA), što je vrlo korisno.
Slično tome, pokretanje komandi u terminalu može biti kao let bez ikakvih indikacija. Ne dobijate nikakvu povratnu informaciju o tome da li sve ide po planu, da li je proces „zaglavio“ ili koliko je blizu završetka. Trepćući kursor nije od velike pomoći.
`pv` i `progress` komande vam pružaju statističke podatke i vizuelne povratne informacije. Možete videti koliko je proces blizu završetka, što vam daje ETA za pokrenute procese. Ovo je mnogo bolje od gledanja u trepćući kursor.
Instaliranje `pv`
Prvo je potrebno instalirati `pv` alat.
Za Ubuntu, koristite sledeću komandu:
sudo apt-get install pv
Za Fedoru, koristite sledeću komandu:
sudo dnf install pv
Za Manjaro, koristite sledeću komandu:
sudo pacman -Syu pv
Korišćenje `pv`
`pv` je skraćenica za „pipe viewer“. `pv` alat se koristi u kombinaciji sa „pipe“ operacijom (`|`). U sledećem primeru, šaljemo ISO sliku kroz zip komandu, kako bi je komprimovali.
Kako bi prikaz bio uočljiviji, korišćene su datoteke sa sporog, eksternog USB drajva nazvanog SILVERXHD.
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso | zip > gparted.zip
Informacije koje nam pruža `pv` su prikazane u donjem redu ekrana.
S leva na desno prikazuju se sledeće informacije:
Količina prenetih podataka.
Proteko vreme.
Brzina prenosa podataka.
Traka napretka i procenat završenog posla.
Procenjeno vreme do završetka (ETA).
Kopiranje datoteke pomoću `pv`
Da biste kopirali datoteku uz prikaz iz `pv`, koristite sledeću komandu:
pv /media/dave/SILVERXHD/gparted-live-1.0.0-1-amd64.iso > gparted.iso
Dobijamo izveštaj o napretku dok se datoteka kopira.
Kopiranje više datoteka pomoću `pv`
Da bismo kopirali više datoteka i foldera uz pomoć `pv`-a, moramo da upotrebimo mali trik. Koristićemo `tar` komandu za premeštanje datoteka.
tar -c help-files/ | pv | tar -x -C Documents/
Deo komande `tar -c help-files/` nalaže `tar` komandi da kreira (`-c`) arhivu datoteka u folderu `help-files`. Ova arhiva se prosleđuje kroz `pv`, što omogućava prikaz napretka. Zatim se vraća nazad u `tar` za poslednji deo komande. Arhiva se raspakuje (`-x`), i folder se menja (`-C`) u `Documents` pre raspakivanja.
Dakle, datoteke i folderi koji se nalaze u `help-files` se kopiraju u `Documents` folder, uz prikaz napretka.
Ovog puta je rezultat malo drugačiji.
Ne dobijamo ETA. Traka napretka sada prikazuje pokretni indikator, što znači da je proces aktivan, ali ne raste s leva na desno kao tradicionalna traka napretka. `pv` prikazuje samo one informacije koje može da dobije od procesa koji se izvršava.
Korišćenje `pv` i `tar` za kreiranje arhive
Kopiranje datoteka sa `pv` i `tar` ne stvara arhivsku datoteku. `tar` kreira neku vrstu „virtualne“ arhive koja se odmah prosleđuje nazad `tar` komandi za raspakivanje datoteka. Ako je naš cilj kopiranje datoteka, to je postignuto. Ali šta ako želimo da kreiramo arhivsku datoteku?
Još uvek možemo koristiti `tar` za kreiranje arhivske datoteke i dobiti izveštaj o napretku od `pv`-a. Opcije koje se koriste sa `tar` su `-c` (kreiraj arhivu), `-z` (kompresuj sa `gzip`-om), i `-f` (ime datoteke arhive).
Napomena: koristimo `-` kao ime datoteke, što uzrokuje da `tar` koristi `stdout` i ispisuje svoj izlaz u terminal. Ne vidimo taj izlaz, jer se on prosleđuje `pv` komandi.
Stvarno ime arhive će biti ime datoteke u koju prosleđujemo izlaz iz `pv`-a. U ovom slučaju, to je `help-files.tgz`.
tar -czf - ./help-files/ | pv > help-files.tgz
Dobijamo iste indikatore napretka kao i ranije, a arhivska datoteka je kreirana.
Opcije prikaza `pv`
Postoji nekoliko opcija koje možete koristiti sa `pv` kako biste promenili način na koji prikazuje izveštaj o napretku.
Ako koristite bilo koju od ovih opcija, sve ostale opcije su isključene. Dakle, ako želite da koristite tri opcije prikaza, onda morate navesti te tri opcije.
Korišćenje `pv` bez ikakvih opcija je isto kao i korišćenje opcija `-pterb`.
`-p`: prikazuje procenat završenosti. Ovo je traka napretka i brojčana vrednost procenta završenog posla.
`-t`: prikazuje proteklo vreme.
`-e`: prikazuje ETA (procenjeno vreme završetka).
`-r`: prikazuje brzinu prenosa podataka.
`-b`: prikazuje broj bajtova (do sada prenetih podataka).
`-n`: prikazuje procenat kao ceo broj. Ovo ispisuje procenat završenosti kao ceo broj, sa svakim novim ažuriranjem u novom redu.
Hajde da ponovimo poslednju komandu i prosledimo opciju `-p` (procenat završenosti) na `pv`.
tar -czf - ./help-files/ | pv -p > help-files.tgz
Ovo isključuje sve druge opcije prikaza. `pv` daje samo procenat završenog elementa.
Pošto `pv` ne dobija brojčanu vrednost za procenat završenosti iz `tar`-a, traka napretka je zamenjena indikatorom koji se kreće. Nema broja koji predstavlja procenat.
Korišćenje `pv` sa `wc`
Možemo koristiti `pv` za prosleđivanje tekstualne datoteke (ili datoteka) u `wc`. `wc` će zatim prebrojati povratne informacije, karaktere i reči, a `pv` će nam dati izveštaj o napretku.
Ovde prosleđujemo sve `.page` datoteke iz foldera `help-files` u `wc`.
pv help-files/*.page | wc
Kada se `wc` završi, možemo videti broj povratnih informacija (redova), karaktera i reči iz svih `.page` datoteka u folderu `help-files`.
Instaliranje komande `progress`
Komanda `progress` pruža slične korisne informacije kao `pv`, ali radi sa specifičnim skupom Linux komandi.
Da biste instalirali `progress` na Ubuntu, koristite sledeću komandu:
sudo apt-get install progress
Da biste instalirali `progress` na Fedori, koristite sledeću komandu:
sudo dnf install progress
Da biste instalirali `progress` na Manjaru, koristite sledeću komandu:
sudo pacman -Syu progress
Sa kojim komandama `progress` radi
Unesite `progress` u terminal i pritisnite Enter kako biste dobili listu komandi sa kojima `progress` može da radi.
progress
Korišćenje `progress` sa pipe operacijom
Postoje dve tehnike koje možemo koristiti za nadgledanje komandi sa `progress`-om. Prva je upotreba pipe operacije (`|`).
Komanda `tar` se nalazi na listi podržanih komandi koje `progress` može da prati, pa hajde da koristimo `tar`.
Opcije koje ćemo koristiti su standardne opcije `-c` (kreiraj arhivu), `-z` (kompresuj sa gzip-om) i `-f` (ime datoteke). Kreiraćemo kompresovanu arhivu svega u folderu `help-files`, a arhiva će se zvati `help.tgz`.
Ovo prosleđujemo u `progress` i koristimo opciju `-m` (monitor) tako da `progress` nastavlja da izveštava o procesu dok se ne završi.
tar -czf help.tgz ./help-files/ | progress -m
Terminal će prikazati napredak `tar` komande dok kreira arhivu.
Dok se svaka datoteka obrađuje, ona je navedena sa sledećim informacijama:
ID procesa.
Naziv procesa.
Procenat završenog posla.
Obrađeni podaci i ukupna veličina datoteke.
Brzina podataka.
Procenjeno preostalo vreme (ETA).
Možda će vas iznenaditi kada vidite da se pojavljuje drugi skup podataka. Ovaj prvi skup podataka je za `tar`. Drugi je za `gzip`. `tar` poziva `gzip` da izvrši kompresiju. Pošto se `gzip` nalazi na listi podržanih komandi, i on izveštava o napretku.
Korišćenje `progress` u režimu neprekidnog nadzora
Možete koristiti `progress` u režimu neprekidnog nadgledanja u realnom vremenu pomoću opcije `-M` (monitor).
Unesite sledeću komandu u terminal:
progress -M
`progress` će izvestiti da nema pokrenutih komandi za nadgledanje. Ali niste vraćeni na komandnu liniju. `progress` čeka dok se ne pokrene komanda koju može da nadgleda. Zatim će automatski početi da izveštava o njoj.
U drugom terminalu, otkucajte komandu koja se nalazi na listi komandi koje `progress` može da nadgleda.
Koristićemo `cat`. Komande koje se prebrzo završe neće biti registrovane od strane `progress`-a, pa ćemo prikazati sadržaj duge tekstualne datoteke.
cat words.page
U terminalu sa `progress`-om, videćete statistiku za `cat` komandu dok se izvršava i bliži se kraju.
Kada `cat` završi sa prikazivanjem sadržaja datoteke, `progress` se vraća u stanje čekanja.
Svaki put kada jedna od komandi sa liste obavi značajan zadatak, `progress` će je automatski nadgledati i izveštavati o njoj.
To je prilično korisno.
100% zavšeno
Uklonite nagađanja i pitanja o tome kako radi dugotrajna komanda i oslobodite se misli o svom kursoru uz pomoć `pv` i `progress` alata.