Sådan overvåger du fremskridtene af Linux-kommandoer (med pv og fremskridt)

I stedet for at flyve blindt, brug Linux pv og progress kommandoer til at spore en kommandos fremskridt. Disse hjælpeprogrammer giver dig statuslinjer for kommandoer, der normalt ikke har nogen. Du vil også se en estimeret tid indtil færdiggørelse.

Hvis du er på en langdistanceflyvning på et fly uden videoskærme i ryglænene, er det ikke let at vide, hvor langt gennem din rejse du er. Du ved, hvornår du lettede. Du ved, hvor lang tid flyveturen forventes at tage. Men hvordan ved du, om du er på sporet, til tiden eller langt bagud? Hvis du ikke ønsker at se filmen under flyvningen, kan du normalt skifte din videoskærm til at vise et kort med dit flys position på den. Du får også nogle statistikker, såsom forventet ankomsttidspunkt (ETA), hvilket er fantastisk.

At starte en kommando fra terminalvinduet kan nogle gange føles som en langdistanceflyvning uden en videoskærm. Du har intet at give nogen indikation om, om alt er godt, eller om processen har hængt, eller hvor tæt på at den er afsluttet. En blinkende markør er ikke særlig informativ.

Kommandoerne pv og fremskridt giver dig nogle statistikker og lidt visuel feedback. Du kan se, hvor tæt processen er for at fuldføre. Det betyder, at du får en ETA for dine løbende processer. Sammenlignet med at stirre på en markør, vinder det hænder ned.

Installation af pv

Du skal installere pv.

Brug denne kommando for at installere pv på Ubuntu:

sudo apt-get install pv

For at installere pv på Fedora, brug denne kommando:

sudo dnf install pv

For at installere pv på Manjaro brug denne kommando:

sudo pacman -Syu pv

Brug af pv

pv står for rørbeskuer. Piping skal være involveret i kommandoen et eller andet sted. Her er et eksempel, hvor vi overfører et ISO-billede gennem zip for at lave en komprimeret zip-fil af ISO.

  Sådan laver du en Linux-drevet klassisk videospilkonsol med RecalboxOS

For at bremse kommandoerne nok til, at der kunne tages et skærmbillede, blev nogle af filerne i eksemplerne brugt til denne artikel gemt på en gammel, langsom, ekstern USB kaldet 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 i et terminalvindue” width=”646″ height=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Oplysningerne pv giver os kan ses på nederste linje af displayet.</p>
<p> <img loading=

Fra venstre mod højre er den information, der vises:

De data, der er overført indtil videre.
Tiden gik for langt.
Dataoverførselshastigheden (gennemstrømning).
En statuslinje og en fuldført procentdel.
Den estimerede tid tilbage før færdiggørelse (ETA).

Kopiering af en fil med pv

For at kopiere en fil med output fra pv, brug denne kommando:

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

Vi får en statusrapport efterhånden som filen kopieres.

Kopiering af flere filer med pv

For at kopiere flere filer og mapper med pv skal vi bruge et lille trick. Vi bruger tjære til at flytte filerne for os.

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

Tar -c help-files/-delen af ​​kommandoen instruerer tar til at oprette (-c) et arkiv af filerne i hjælpefiler-mappen. Dette føres gennem pv, så vi får en visning af fremskridtene. Den føres derefter tilbage i tjære for den sidste del af kommandoen. Arkivet udtrækkes (-x), og biblioteket ændres (-C) til Dokumenter før udtrækningen.

Så filerne og mapperne, der er i hjælpefiler, kopieres til mappen Dokumenter med en statusvisning.

Outputtet er lidt anderledes denne gang.

Vi får ikke en ETA. Statuslinjen viser nu en bevægelig indikator. Det viser, at processen er aktiv, men den vokser ikke fra venstre mod højre som en traditionel statuslinje. pv er begrænset til at vise den information, den kan udtrække fra den proces, der overføres.

Brug af pv og tar til at oprette et arkiv

Kopiering af filer med pv og tar efterlader os ikke med en arkivfil. En slags “virtuelt” arkiv skabes af tar, som føres direkte tilbage i tar for at udtrække filerne. Hvis vores mål er at kopiere filer, er det opnået. Men hvad hvis vi vil oprette en arkivfil?

Vi kan stadig bruge tar til at oprette en arkivfil og få en statusrapport fra pv. Valgmulighederne brugt med tar er -c (opret arkiv), -z (komprimer med gzip) og -f (arkivets filnavn).

  Sådan installeres WPS Office på Linux

Bemærk, at vi bruger – som filnavnet, hvilket får tar til at bruge stdout, og for at skrive dets output til terminalvinduet. Vi ser ikke det output, fordi det er ført gennem pv.

Det faktiske navn på arkivet vil være det filnavn, som vi overfører output fra pv til. I dette tilfælde er det “help-files.tgz”.

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

tar -czf - ./help-files/ |  pv > help-files.tgz i et terminalvindue” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Vi får de samme fremskridtsindikatorer som før, og arkivfilen oprettes til os.</p>
<p> p><img loading=

Pv-visningsmuligheder

Der er en række muligheder, du kan bruge med pv til at ændre detaljerne i dens rapport.

Hvis du bruger nogen af ​​disse muligheder, er alle de andre muligheder slået fra. Så hvis du vil have tre af visningsmulighederne i brug, skal du angive disse tre muligheder.

Brug af pv uden nogen muligheder er det samme som at bruge -pterb muligheder.

-p: Vis den fuldførte procentdel. Dette er statuslinjen og den procentvise fuldførte figur.
-t: Vis den forløbne tid.
-e: Vis ETA.
-r: Vis dataoverførselshastigheden.
-b: Vis byte-antal (data overført indtil videre).
-n: vis procentdelen som et heltal. Dette udskriver den fuldførte procentdel som et heltal, med hver ny opdatering på en ny linje.

Lad os gentage den sidste kommando og videregive -p (procent fuldført) mulighed til pv.

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

tar -czf - ./help-files/ |  pv - p > help-files.tgz i et terminalvindue” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Dette deaktiverer alle de andre visningsmuligheder.  pv giver kun procentdelen af ​​fuldførte elementer.</p>
<p>Fordi pv ikke får en procentdel fuldført tal fra tar, erstattes statuslinjen med en bevægelig indikator.  Der er ikke noget procenttal.</p>
<p><img loading=

Brug af pv med wc

Vi kan bruge pv til at overføre en tekstfil (eller filer) til wc. wc vil så tælle vognretur, tegn og ord, og pv vil give os en statusrapport.

Her overfører vi alle “.page”-filerne i hjælpefilbiblioteket til wc.

Når wc er færdig, kan vi se vores antal af vognretur (linjer), tegn og ord fra alle “.page”-filerne i mappen med hjælpefiler.

Installation af progress-kommandoen

Fremskridtskommandoen giver den samme slags brugbar information som pv, men det virker med et specifikt sæt Linux-kommandoer.

For at installere fremskridt i Ubuntu skal du bruge denne kommando:

sudo apt-get install progress

For at installere fremskridt i Fedora, brug denne kommando:

sudo dnf install progress

For at installere fremskridt i Manjaro, brug denne kommando:

sudo pacman -Syu progress

Kommandoernes fremskridt fungerer med

Hvis du indtaster fremskridt i et terminalvindue og trykker på Enter, får du en liste over de kommandoer, som fremskridt fungerer med.

progress

Brug af fremskridt med rør

Der er to teknikker, vi kan bruge til at overvåge kommandoer med fremskridt. Den første er at bruge rør.

  Sådan spiller du Overlord på Linux

Tar-kommandoen er på listen over understøttede kommandoer, som fremskridt kan overvåge, så lad os bruge tar.

De muligheder, vi vil bruge, er standard-c (opret arkiv), -z (komprimer med gzip) og -f (filnavn). Vi vil oprette et komprimeret arkiv med alt i hjælpefiler-mappen, og arkivet vil få navnet “help.tgz”.

Vi overfører det til fremskridt og bruger muligheden -m (monitor), så fremskridt fortsætter med at rapportere om processen, indtil den er afsluttet.

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

Terminalvinduet viser forløbet af tar-kommandoen, mens den opretter arkivet.

Efterhånden som hver fil behandles, vises den med følgende oplysninger:

Processens ID.
Processens navn.
Procent fuldført.
Data behandlet og filens samlede størrelse.
Datahastighed (gennemstrømning).
Estimeret resterende tid (ETA).

Du kan blive overrasket over at se et andet datasæt dukke op. Dette første datasæt er for tjære. Den anden er til gzip. tar kalder gzip for at udføre komprimeringen. Fordi gzip er på listen over understøttede kommandoer, rapporterer status om det.

Brug af fremskridt i tilstanden konstant overvågning

Du kan bruge fremskridt i en kontinuerlig overvågningstilstand i realtid ved at bruge -M (monitor) mulighed.

Skriv følgende kommando i et terminalvindue:

progress -M

fremskridt vil rapportere, at der ikke er nogen kommandoer, som den kan overvåge. Men du kommer ikke tilbage til kommandolinjen. fremskridt venter, indtil en kommando, som den kan overvåge, starter. Det vil så automatisk begynde at rapportere om det.

I et andet terminalvindue skal du skrive en kommando, der er på listen over kommandoer, som fremskridt kan overvåge.

Vi skal bruge kat. Kommandoer, der er overstået for hurtigt, registreres ikke med fremskridt, så vi viser indholdet af en meget lang tekstfil.

cat words.page

I terminalvinduet med fremskridt i det, vil du se statistik for cat-kommandoen, mens den udføres og arbejder hen imod fuldførelse.

Når kat er færdig med at liste, vender filens fremskridt tilbage til sin ventetilstand.

Hver gang en af ​​de kommandoer, den kan rapportere om, udfører en større opgave, vil fremskridt automatisk overvåge den og rapportere om den.

Det er ret pænt.

100 % gennemført

Tag gætværket ud af at spekulere over, hvordan en langvarig kommando klarer sig, og tag en pause fra at overveje din markør med pv og fremskridt.