Ejecute solicitudes paralelas con el comando xargs
La xargs comando es un comando en sistemas operativos Linux y UNIX que acepta o toma argumentos de la entrada estándar y luego ejecuta un comando para cada argumento. En pocas palabras, el comando xargs puede tomar la salida de un comando y procesarlo como un argumento de un comando diferente.
Por ejemplo, en el siguiente comando, xargs toma los argumentos del lado izquierdo y crea directorios usando los nombres de los argumentos.
$ echo 'África Asia Europa América' | xargs mkdir
El comando xargs también se puede utilizar para ejecutar varias solicitudes al mismo tiempo. Si revisa las páginas de manual, encontrará una sección que le brinda los argumentos de la línea de comandos como se indica a continuación.
Usando xargs, intentaremos ordenar la ejecución de múltiples solicitudes de curl al mismo tiempo.
El comando curl de Linux es una utilidad de línea de comandos que se utiliza para la transferencia de archivos. Proporciona soporte para una gran variedad de protocolos como HTTP, HTTPS, FTP, FTPS, SCP, TFTP y muchos más.
Suponga que desea obtener los encabezados HTTP de un sitio web mediante el comando curl. Para hacer esto, necesitaría invocar el comando curl con la bandera -I seguida de la URL como se muestra.
$ curl -I "https: // linuxways.neto"
Ahora, acaba de enviar una única solicitud de curl. Suponga que desea ejecutar 5 solicitudes en paralelo; Cómo haría usted para esto? La solución a esto es usar el comando xargs como se muestra junto con el comando curl.
$ xargs -I% -P 5 curl -I "https: // linuxways.neto" < <(printf '%s\n' 1… 10)La bandera -P indica el número de solicitudes en paralelo. La sección <(printf '%s\n' 1… 10) imprime los números del 1 al 10 y hace que el comando curl se ejecute 10 veces con 5 solicitudes ejecutándose en paralelo.
Además, puede ejecutar el siguiente comando para lograr el mismo resultado. Al igual que en el ejemplo anterior, el siguiente comando ejecuta el comando curl 10 veces con 5 solicitudes en paralelo.
$ seq 1 10 | xargs -n1 -P 5 curl -I "https: // linuxways.neto"Tomemos otro ejemplo. Suponga que desea descargar 3 archivos simultáneamente usando el comando curl. El primer paso será guardar las URL de los archivos para que no se descarguen en un archivo de texto. Aquí, tenemos una descarga de archivo de texto.txt con las siguientes URL.
Para descargar los archivos al mismo tiempo, ejecute el siguiente comando:
$ xargs -P 5 -n 1 rizo -O < download.txtEl comando riza cada línea en el archivo de texto 5 veces en paralelo. La -n 1 flag asegura que el comando curl lee una línea por cada ejecución del comando curl.
Y así es como ejecutas múltiples solicitudes de curl en paralelo.