Slik kjører du Linux-kommandoer samtidig med GNU Parallel

Hvordan installere GNU Parallel TechRepublics Jack Wallen deg gjennom trinn-for-trinn-prosessen for å installere GNU Parallel-kommandolinjeprogrammet.

Når du kjører kommandoer på Linux, enten de er av gangen på ledetekst eller fra et bash-skript, kjører disse kommandoene i rekkefølge. Den første kommandoen kjøres, etterfulgt av den andre, etterfulgt av den tredje. Gitt, tiden mellom kommandoene er så liten, det blotte øye vil ikke legge merke til det. For noen tilfeller er det kanskje ikke det mest effektive middelet til å kjøre kommandoer. Hvis du befinner deg i en situasjon der du trenger flere kommandoer som skal kjøres på nøyaktig samme tid (si på datasenterets Linux-servere), hva gjør du da?

Datasenter må leses

  • 8 datasenterprognoser for 2020
  • 7 nettverksvarslinger for 2020: Automatisering, edge computing, Wi-Fi 6, mer
  • Beste praksis for server virtualisering og tips om hva du ikke skal gjøre
  • Kvanteberegning: Syv sannheter du trenger å vite

Du går til GNU Parallel.

Hva er GNU-parallell?

GNU Parallel er et skallverktøy som gjør det mulig å utføre jobber parallelt ved bruk av en eller flere datamaskiner. En jobb kan være en enkelt kommando eller input fra en fil som inneholder ting som en liste over kommandoer, en liste over filer, en liste over verter, en liste over brukere, en liste over nettadresser eller en liste over tabeller. GNU Parallel kan også ta informasjon fra en ledet kommando.

Jeg vil vise deg hvordan du installerer GNU Parallel og deretter det grunnleggende om bruken.

Installasjon

Jeg skal demonstrere på en Ubuntu Server 16.04. GNU Parallel kan installeres på nesten hvilken som helst Linux-distribusjon, så hvis du bruker en annen distribusjon enn Ubuntu, må du endre installasjonskommandoen for å passe til plattformen din.

Siden GNU Parallel finnes i standard depot, er installasjonen enkel. Åpne et terminalvindu og gi kommandoen:

 sudo apt installere parallelt 

Når installasjonen er fullført, ønsker du å stille inn sitasjonsbanneret. Dette er satt i verk for å sikre at alle som bruker GNU Parallel for publikum siterer utviklerne.

For å dempe siteringsbanneret, gi kommandoen parallell - bibliotek . Du vil da bli gitt informasjonen om sitering og blir bedt om å skrive vil sitere ( figur A ).

Figur A

Hvis du ikke vil sitere utviklerne, kan du alltid betale 10000 EUR.


Du er nå klar til å bruke GNU Parallel.

bruk

Den enkleste måten å demonstrere GNU Parallel på er å bruke ekko-kommandoen. La oss si at vi vil bruke ekko-kommandoen til å skrive ut en to tre tre fire. Kommandoen for dette vil være:

 ekko "en to tre fire fire" 

Utgangen vil se slik ut i figur B.

Figur B

Ekkoutgangen vår.


Den samme kommandoen, ved bruk av parallell, ville være:

 parallell ekko ::: en to tre fire 

Utdataene for det ovennevnte vil se slik ut i figur C.

Figur C

Den parallelle versjonen av ekko.


Vi kan også gi to deler av inndata slik:

 parallelt ekko ::: 1 2 3 4 ::: ABCD 

Utdataene for kommandoen ovenfor vil se ut som vist i figur D.

Figur D

To inndatakilder fra kommandolinjen.


Som du ser, avgrenser vi kommandoen fra inngangsvariablene med :::-tegnene. Du kan også bruke filer som input for kommandoen. La meg demonstrere. Lag to filer. Den første, kalt abc-filen med innholdet:

 ABCDEFGHIK 

Den andre filen, kalt 123-fil, vil ha innholdet:

 1 2 3 4 5 6 7 8 9 10 

Nå bruker vi disse to filene til å generere output. Kommandoen for dette kan se ut som:

 parallell-en abc-fil-et 123-fil ekko 

Utgangen vil se ut som vist i figur E.

Figur E

Innspill fra en fil ser slik ut.


Hvis inputfilene dine ikke har samme lengde, hva gjør du da? GNU Parallel vil pakke inn utdataene fra den kortere filen, slik at den samsvarer med den lengre filen. Utgangen vil være lik den i figur E (over). Men hva om vi ønsker å få litt mer kontroll over den produksjonen. I stedet for at GNU parallelt gjentar (For å matche inngangene):

 1 A 1 A 1 A 1 A 1 A 2 B 2 B 2 B 2 B 2 B 

Det er mulig å benytte seg av -applikasjonsargumentet . Si at vi har 10-filen med 10 linjer med input (12345678910 - ett tall per linje) og 5-filen med fem linjer med input (ABCDE - ett tall per linje). Gi kommandoen:

 parallell - bruk-et 10-fil-et 5-fil ekko 

Du vil se at GNU Parallel bare vil skrive ut innholdet i 10-filer en gang, men vil gjenta innholdet i 5-filer til den samsvarer med lengden på 10-filer ( figur F ).

Figur F

Pakk inn utgangen med - så riktig.


Bruk med kommandoer

Så langt har vi bare brukt ekko-kommandoen til å skrive ut tegn. La oss se et eksempel som faktisk bruker kommandoer. Si at vi har en katalog som heter TEST. Inne i den mappen er en fil som heter test og en underkatalog som heter 1 som inneholder filtesten og test2. La oss si at vi vil gi nytt navn til test1, gi nytt navn til test1 til test2, tjære 1-katalogen og deretter gi nytt navn til den tarredede katalogen. Vi kan opprette en fil med følgende innhold:

 mv test test1 mv test1 test2 tar cfz 1.tar.gz 1 mv 1.tar.gz 2.tar.gz 

Lagre og lukk filen, ved å navngi den jobber. Nå tar vi innspill fra jobber med den parallelle kommandoen, slik:

 parallell --jobber 4 <jobber 

Alternativet --jobs instruerer GNU parallelt hvor mange kommandoer som er tillatt å kjøre. I vårt tilfelle har vi 4 kommandoer. Hvis det var flere kommandoer enn tillatte jobber, ville de gjenværende kommandoene bli plassert i en kø. Generelt sett er det trygt å tillate flere jobber enn du har kommandoer. Så utsteder kommandoen:

 parallell --jobber 6 <jobber 

Ville være bra.

Det kommer ingen utdata fra kommandoen. Hvis du bytter til TEST-katalogen, vil du se at alt har endret seg, i henhold til kommandofilen vår.

Riper i overflaten

Vi har bare kløpt overflaten på GNU Parallel. Jeg anbefaler på det sterkeste at du gir den offisielle GNU-parallellopplæringen en lese, og ser denne videoopplæringsserien på Yutube, slik at du kan forstå kompleksiteten i verktøyet (som det er mange av). Men dette vil komme deg i gang på en vei til å hjelpe datasenterets Linux-servere å bruke kommandoer med mer effektivitet.

Datasenter Trender Nyhetsbrev

DevOps, virtualisering, hybridsky, lagring og driftseffektivitet er bare noen av datasentertemaene vi vil trekke frem. Leveres mandager og onsdager

Registrer deg i dag

© Copyright 2020 | mobilegn.com