Hvordan overvåke fremdriften til Linux-kommandoer (med pv og fremgang)

I stedet for å fly i blinde, bruk Linux pv og fremdriftskommandoer for å spore en kommandos fremgang. Disse verktøyene vil gi deg fremdriftsindikatorer for kommandoer som vanligvis ikke har noen. Du vil også se en beregnet tid til ferdigstillelse.

Hvis du er på en langdistanseflyvning på et fly uten videoskjermer i seteryggene, er det ikke lett å vite hvor langt gjennom reisen du er. Du vet når du tok av. Du vet hvor lang tid flyturen forventes å ta. Men hvordan vet du om du er i rute, i tide eller langt etter skjema? Hvis du ikke vil se filmen ombord, kan du vanligvis bytte videoskjerm for å vise et kart med posisjonen til flyet ditt. Du får også litt statistikk, for eksempel forventet ankomsttid (ETA), som er flott.

Å starte en kommando fra terminalvinduet kan noen ganger føles som en langdistanseflyvning uten videoskjerm. Du har ingenting å si om alt er bra eller om prosessen har hengt seg, og heller ikke hvor nærme den er ferdig. En blinkende markør er ikke særlig informativ.

Pv- og fremdriftskommandoene gir deg litt statistikk og litt visuell tilbakemelding. Du kan se hvor nærme prosessen er å fullføre. Det betyr at du får en ETA for dine løpende prosesser. Sammenlignet med å stirre på en markør, vinner den uten tvil.

Montering av pv

Du må installere pv.

For å installere pv på Ubuntu bruk denne kommandoen:

sudo apt-get install pv

For å installere pv på Fedora bruk denne kommandoen:

sudo dnf install pv

For å installere pv på Manjaro bruk denne kommandoen:

sudo pacman -Syu pv

Ved å bruke pv

pv står for pipe viewer. Piping må være involvert i kommandoen et sted. Her er et eksempel der vi overfører et ISO-bilde gjennom zip for å lage en komprimert zip-fil av ISO.

For å bremse kommandoene nok til at et skjermbilde kunne tas, ble noen av filene i eksemplene som ble brukt for denne artikkelen, lagret på en gammel, treg, ekstern USB kalt 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 terminalvindu” width=”646″ height=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<div style=

Informasjonen pv gir oss kan sees på nederste linje av displayet.

Fra venstre til høyre er informasjonen som vises:

Dataene som er overført så langt.
Tiden har gått så langt.
Dataoverføringshastigheten (gjennomstrømning).
En fremdriftslinje og en prosentvis fullført tall.
Den estimerte tiden som gjenstår før ferdigstillelse (ETA).

Kopiere en fil med pv

For å kopiere en fil med utdata fra pv, bruk denne kommandoen:

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

Vi får en fremdriftsrapport etter hvert som filen kopieres.

Kopiere flere filer med pv

For å kopiere flere filer og mapper med pv må vi bruke et lite triks. Vi bruker tar for å flytte filene for oss.

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

Tar -c help-files/-delen av kommandoen instruerer tar til å lage (-c) et arkiv av filene i mappen hjelpefiler. Dette føres gjennom pv slik at vi får en visning av fremdriften. Den blir deretter ført tilbake til tar for den siste delen av kommandoen. Arkivet trekkes ut (-x) og katalogen endres (-C) til Dokumenter før uttrekket.

Så filene og mappene som er i hjelpefilene blir kopiert til Dokumenter-mappen, med en fremdriftsvisning.

Utgangen er litt annerledes denne gangen.

Vi får ingen ETA. Fremdriftslinjen viser nå en bevegelig indikator. Den viser at prosessen er aktiv, men den vokser ikke fra venstre til høyre som en tradisjonell fremdriftslinje. pv er begrenset til å vise informasjonen den kan trekke ut fra prosessen som sendes.

Bruke pv og tar for å lage et arkiv

Kopiering av filer med pv og tar etterlater oss ikke en arkivfil. Et slags «virtuelt» arkiv lages av tar, som mates rett tilbake til tar for å pakke ut filene. Hvis målet vårt er å kopiere filer, er det oppnådd. Men hva om vi vil lage en arkivfil?

Vi kan fortsatt bruke tar til å lage en arkivfil og få en fremdriftsrapport fra pv. Alternativene som brukes med tar er -c (opprett arkiv), -z (komprimer med gzip) og -f (filnavnet til arkivet).

  Hvordan montere og demontere lagringsenheter fra Linux-terminalen

Merk at vi bruker – som filnavnet, som får tar til å bruke stdout, og for å skrive utdataene til terminalvinduet. Vi ser ikke den utgangen fordi den føres gjennom pv.

Det faktiske navnet på arkivet kommer til å være filnavnet som vi overfører utdata fra pv til. I dette tilfellet er det «help-files.tgz».

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

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

Visningsalternativer for pv

Det er en rekke alternativer du kan bruke med pv for å endre detaljene i rapporten.

Hvis du bruker noen av disse alternativene, er alle de andre alternativene slått av. Så hvis du vil ha tre av visningsalternativene i bruk, må du spesifisere disse tre alternativene.

Å bruke pv uten noen alternativer er det samme som å bruke -pterb-alternativene.

-p: vis prosentandelen fullført. Dette er fremdriftslinjen og prosentandelen som er fullført.
-t: viser medgått tid.
-e: Vis ETA.
-r: viser dataoverføringshastigheten.
-b: vis byte-tellingen (data overført så langt).
-n: vis prosentandelen som et heltall. Dette skriver ut prosentandelen fullført som et heltall, med hver nye oppdatering på en ny linje.

La oss gjenta den siste kommandoen og sende alternativet -p (prosent fullført) til pv.

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

tar -czf - ./help-files/ |  pv - p > help-files.tgz i et terminalvindu” width=”646″ height=”57″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”  onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”></p>
<p>Dette slår av alle de andre visningsalternativene.  pv gir kun prosentandelen fullført element.</p>
<p>Fordi pv ikke får en prosentvis fullført tall fra tar, erstattes fremdriftslinjen med en bevegelig indikator.  Det er ingen prosentandel.</p>
<p><img loading=

Bruker pv med wc

Vi kan bruke pv til å overføre en tekstfil (eller filer) til wc. wc vil da telle vognretur, tegn og ord og pv vil gi oss en fremdriftsrapport.

Her overfører vi alle «.page»-filene i hjelpefilkatalogen til wc.

Når wc er fullført, kan vi se vårt antall vognretur (linjer), tegn og ord fra alle «.page»-filene i hjelpefiler-mappen.

Installerer fremdriftskommandoen

Fremdriftskommandoen gir samme type nyttig informasjon som pv, men det fungerer med et spesifikt sett med Linux-kommandoer.

For å installere fremdrift i Ubuntu, bruk denne kommandoen:

sudo apt-get install progress

For å installere fremdrift i Fedora, bruk denne kommandoen:

sudo dnf install progress

For å installere fremdrift i Manjaro, bruk denne kommandoen:

sudo pacman -Syu progress

Kommandofremgangen fungerer med

Hvis du skriver inn fremdrift i et terminalvindu og trykker Enter, får du en liste over kommandoene som fremdriften fungerer med.

progress

Bruk av fremgang med rør

Det er to teknikker vi kan bruke for å overvåke kommandoer med fremdrift. Den første er å bruke rør.

  Hvordan installere Delft-ikontemaet i Linux

Tar-kommandoen er i listen over støttede kommandoer som fremdriften kan overvåke, så la oss bruke tar.

Alternativene vi bruker er standardalternativene -c (opprett arkiv), -z (komprimer med gzip) og -f (filnavn). Vi skal lage et komprimert arkiv av alt i hjelpefil-mappen, og arkivet vil få navnet «help.tgz».

Vi overfører det til fremdriften og bruker alternativet -m (monitor), slik at fremdriften fortsetter å rapportere om prosessen til den er fullført.

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

Terminalvinduet vil vise fremdriften til tar-kommandoen når den oppretter arkivet.

Etter hvert som hver fil behandles, er den oppført med følgende informasjon:

Prosess-ID.
Prosessnavnet.
Prosent fullført.
Data behandlet og total størrelse på filen.
Datahastighet (gjennomstrømning).
Beregnet tid som gjenstår (ETA).

Du kan bli overrasket over å se et annet datasett dukke opp. Dette første datasettet er for tjære. Den andre er for gzip. tar kaller gzip for å utføre komprimeringen. Fordi gzip er i listen over støttede kommandoer, rapporterer fremdriften om den.

Bruke fremdrift i kontinuerlig overvåkingsmodus

Du kan bruke fremdriften i en kontinuerlig overvåkingsmodus i sanntid ved å bruke alternativet -M (monitor).

Skriv inn følgende kommando i et terminalvindu:

progress -M

fremdriften vil rapportere at det ikke er noen kommandoer som kjører for den å overvåke. Men du kommer ikke tilbake til kommandolinjen. fremdriften venter til en kommando som den kan overvåke starter. Den vil da automatisk begynne å rapportere om den.

I et annet terminalvindu skriver du inn en kommando som er i listen over kommandoer som fremdriften kan overvåke.

Vi skal bruke katt. Kommandoer som er over for raskt vil ikke registreres med fremdriften, så vi viser innholdet i en veldig lang tekstfil.

cat words.page

I terminalvinduet med fremgang i det, vil du se statistikk for cat-kommandoen mens den utføres og jobber mot fullføring.

Når katten er ferdig med å liste filfremdriften tilbake til ventetilstand.

Hver gang en av kommandoene den kan rapportere om utfører en betydelig oppgave, vil fremdriften automatisk overvåke den og rapportere om den.

Det er ganske pent.

100 % fullført

Ta gjettingen ut av å lure på hvordan en langvarig kommando gjør det, og ta en pause fra å tenke på markøren med pv og fremgang.