Kør parallelle anmodninger ved hjælp af kommandoen xargs
Det xargs kommando er en kommando i Linux og UNIX-lignende operativsystemer, der accepterer eller tager argumenter fra standardinput og derefter kører en kommando for hvert argument. Kort sagt kan kommandoen xargs tage output fra en kommando og behandle den som et argument for en anden kommando.
I kommandoen nedenfor tager xargs for eksempel argumenterne på venstre side og opretter mapper ved hjælp af argumentnavne.
$ ekko 'Afrika Asien Europa Amerika' | xargs mkdir
Xargs-kommandoen kan også bruges til at køre flere anmodninger samtidigt. Hvis du tjekker manpages, finder du et afsnit, der giver dig kommandolinjeargumenterne som angivet nedenfor.
Ved hjælp af xargs vil vi forsøge at beordre udførelsen af flere curl-anmodninger på samme tid.
Linux curl-kommandoen er et kommandolinjeprogram, der bruges til filoverførsel. Det giver support til et utal af protokoller som HTTP, HTTPS, FTP, FTPS, SCP, TFTP og så mange flere.
Antag at du vil hente HTTP-overskrifterne på et websted ved hjælp af curl-kommandoen. For at gøre dette skal du påberåbe curl-kommandoen med -I-flag efterfulgt af URL'en som vist.
$ curl -I "https: // linuxways.net"
Nu har du lige sendt en enkelt krølleanmodning. Antag at du vil udføre 5 parallelle anmodninger; hvordan ville du gå om dette?? Løsningen på dette er at bruge kommandoen xargs som vist sammen med curl-kommandoen.
$ xargs -I% -P 5 krøller -I "https: // linuxways.net" < <(printf '%s\n' 1… 10)Flagget -P angiver antallet af anmodninger parallelt. Sektionen <(printf '%s\n' 1… 10) udskriver tallene 1 - 10 og får curl-kommandoen til at køre 10 gange med 5 anmodninger, der kører parallelt.
Derudover kan du køre kommandoen nedenfor for at opnå det samme resultat. Som med det foregående eksempel udfører kommandoen nedenfor curl-kommandoen 10 gange med 5 anmodninger parallelt.
$ seq 1 10 | xargs -n1 -P 5 krølle -I "https: // linuxways.net"Lad os tage et andet eksempel. Antag at du vil downloade 3 filer samtidigt ved hjælp af curl-kommandoen. Det første trin vil være at gemme URL'erne til filerne fra at blive downloadet i en tekstfil. Her har vi en tekstfil download.txt med følgende webadresser.
For at downloade filerne samtidigt skal du køre følgende kommando:
$ xargs -P 5 -n 1 krølle -O < download.txtKommandoen krøller hver linje i tekstfilen 5 gange parallelt. Det -n 1 flag sikrer, at curl-kommandoen læser en linje for hver udførelse af curl-kommandoen.
Og det er sådan, du udfører flere krølleanmodninger parallelt.