Voer parallelle verzoeken uit met de opdracht xargs
De xargs opdracht is een opdracht in Linux- en UNIX-achtige besturingssystemen die argumenten accepteert of accepteert van standaardinvoer en vervolgens een opdracht uitvoert voor elk argument. Simpel gezegd, de opdracht xargs kan de uitvoer van een opdracht nemen en deze verwerken als een argument van een andere opdracht.
In het onderstaande commando neemt xargs bijvoorbeeld de argumenten aan de linkerkant en maakt mappen aan met de argumentnamen.
$ echo 'Afrika Azië Europa Amerika' | xargs mkdir
De opdracht xargs kan ook worden gebruikt om meerdere verzoeken tegelijk uit te voeren. Als je de man-pagina's bekijkt, zul je een sectie vinden die je de opdrachtregelargumenten geeft, zoals hieronder aangegeven:.
Met behulp van xargs zullen we proberen om de uitvoering van meerdere curl-verzoeken tegelijkertijd te bevelen.
De Linux curl-opdracht is een opdrachtregelprogramma dat wordt gebruikt voor bestandsoverdracht. Het biedt ondersteuning voor een groot aantal protocollen zoals HTTP, HTTPS, FTP, FTPS, SCP, TFTP en nog veel meer.
Stel dat u de HTTP-headers van een website wilt ophalen met het curl-commando. Om dit te doen, moet u het curl-commando aanroepen met de vlag -I gevolgd door de URL zoals weergegeven.
$ curl -I "https://linuxways.netto"
Nu heb je zojuist een enkel krulverzoek verzonden. Stel dat u 5 parallelle verzoeken wilt uitvoeren; hoe zou je dit aanpakken?? De oplossing hiervoor is om het xargs-commando te gebruiken zoals weergegeven naast het curl-commando.
$ xargs -I % -P 5 curl -I "https://linuxways.netto" < <(printf '%s\n' 1… 10)De vlag -P geeft het aantal parallelle verzoeken aan. Het deel <(printf '%s\n' 1… 10) drukt de nummers 1 - 10 af en zorgt ervoor dat het curl-commando 10 keer wordt uitgevoerd met 5 parallelle verzoeken.
Bovendien kunt u de onderstaande opdracht uitvoeren om hetzelfde resultaat te bereiken:. Net als bij het vorige voorbeeld, voert de onderstaande opdracht de curl-opdracht 10 keer uit met 5 parallelle verzoeken.
$ volgende 1 10 | xargs -n1 -P 5 curl -I "https://linuxways.netto"Laten we nog een voorbeeld nemen. Stel dat u 3 bestanden tegelijk wilt downloaden met het curl-commando. De eerste stap is om de URL's van de bestanden op te slaan zodat ze niet kunnen worden gedownload in een tekstbestand. Hier hebben we een tekstbestand te downloaden.txt met de volgende URL's.
Voer de volgende opdracht uit om de bestanden tegelijkertijd te downloaden:
$ xargs -P 5 -n 1 krul -O < download.txtDe opdracht krult elke regel in het tekstbestand 5 keer parallel. De -n 1 flag zorgt ervoor dat het curl-commando één regel leest voor elke uitvoering van het curl-commando.
En zo voer je meerdere curl-verzoeken parallel uit.