Exécutez des demandes parallèles en utilisant la commande xargs
Le xargs La commande est une commande dans les systèmes d'exploitation de type Linux et Unix qui accepte ou prend les arguments de l'entrée standard, puis exécute une commande pour chaque argument. Autrement dit, la commande xargs peut prendre la sortie d'une commande et la traiter comme un argument d'une commande différente.
Par exemple, dans la commande ci-dessous, Xargs prend les arguments sur le côté gauche et crée des répertoires en utilisant les noms d'argument.
$ echo 'Africa Asie Europe America' | xargs mkdir
La commande xargs peut également être utilisée pour exécuter plusieurs demandes simultanément. Si vous vérifiez les pages de Man, vous trouverez une section qui vous donne les arguments en ligne de commande comme indiqué ci-dessous.
À l'aide de xargs, nous tenterons de commander l'exécution de plusieurs demandes de curl en même temps.
La commande Linux Curl est un utilitaire de ligne de commande qui est utilisé pour le transfert de fichiers. Il prend en charge une myriade de protocoles tels que HTTP, HTTPS, FTP, FTPS, SCP, TFTP et tant d'autres.
Supposons que vous souhaitiez obtenir les en-têtes HTTP d'un site Web à l'aide de la commande Curl. Pour ce faire, vous devrez invoquer la commande Curl avec le drapeau -I suivi de l'URL comme indiqué.
$ curl -i "https: // linuxways.filet"
Maintenant, vous venez d'envoyer une seule demande de boucle. Supposons que vous souhaitiez exécuter 5 demandes parallèles; Comment allez-vous y aller? La solution à cela consiste à utiliser la commande xargs comme indiqué à côté de la commande curl.
$ xargs -i% -p 5 curl -i "https: // linuxways.filet" < <(printf '%s\n' 1… 10)
L'indicateur -p indique le nombre de demandes en parallèle. La section <(printf '%s\n' 1… 10) imprime les numéros 1 à 10 et fait fonctionner la commande curl 10 fois avec 5 demandes fonctionnant en parallèle.
De plus, vous pouvez exécuter la commande ci-dessous pour obtenir le même résultat. Comme pour l'exemple précédent, la commande ci-dessous exécute la commande curl 10 fois avec 5 demandes en parallèle.
$ SEQ 1 10 | xargs -n1 -p 5 curl -i "https: // linuxways.filet"
Prenons un autre exemple. Supposons que vous souhaitiez télécharger 3 fichiers simultanément à l'aide de la commande curl. La première étape sera de sauvegarder les URL des fichiers par téléchargement sur un fichier texte. Ici, nous avons un téléchargement de fichier texte.txt avec les URL suivantes.
Pour télécharger les fichiers simultanément, exécutez la commande suivante:
$ xargs -p 5 -n 1 curl -o < download.txt
La commande recourte chaque ligne dans le fichier texte 5 fois en parallèle. Le -n 1 Le drapeau garantit que la commande curl lit une ligne pour chaque exécution de la commande curl.
Et c'est ainsi que vous exécutez plusieurs demandes de curl en parallèle.