Esegui richieste parallele usando il comando xargs
Il xargs comando è un comando nei sistemi operativi simili a Linux e UNIX che accetta o prende argomenti dall'input standard e quindi esegue un comando per ogni argomento. In poche parole, il comando xargs può prendere l'output di un comando ed elaborarlo come argomento di un comando diverso.
Ad esempio, nel comando seguente, xargs prende gli argomenti sul lato sinistro e crea directory usando i nomi degli argomenti.
$ echo 'Africa Asia Europa America' | xargs mkdir
Il comando xargs può essere utilizzato anche per eseguire più richieste contemporaneamente. Se controlli le pagine man, troverai una sezione che ti fornisce gli argomenti della riga di comando come indicato di seguito.
Usando xargs, proveremo a comandare l'esecuzione di più richieste curl contemporaneamente.
Il comando Linux curl è un'utilità della riga di comando utilizzata per il trasferimento di file. Fornisce supporto per una miriade di protocolli come HTTP, HTTPS, FTP, FTPS, SCP, TFTP e molti altri.
Supponiamo di voler ottenere le intestazioni HTTP di un sito Web utilizzando il comando curl. Per fare ciò, dovresti invocare il comando curl con il flag -I seguito dall'URL come mostrato.
$ curl -I "https://linuxways.netto"
Ora, hai appena inviato una singola richiesta di curl. Supponiamo di voler eseguire 5 richieste parallele; come faresti a riguardo?? La soluzione a questo è usare il comando xargs come mostrato accanto al comando curl.
$ xargs -I % -P 5 curl -I "https://linuxways.netto" < <(printf '%s\n' 1… 10)Il flag -P indica il numero di richieste in parallelo. La sezione <(printf '%s\n' 1… 10) stampa i numeri da 1 a 10 e fa in modo che il comando curl venga eseguito 10 volte con 5 richieste in esecuzione in parallelo.
Inoltre, puoi eseguire il comando seguente per ottenere lo stesso risultato. Come nell'esempio precedente, il comando seguente esegue il comando curl 10 volte con 5 richieste in parallelo.
$ seq 1 10 | xargs -n1 -P 5 curl -I "https://linuxways.netto"Facciamo un altro esempio. Supponiamo di voler scaricare 3 file contemporaneamente usando il comando curl. Il primo passo sarà salvare gli URL dei file da scaricare su un file di testo. Qui abbiamo un download di file di testo.txt con i seguenti URL.
Per scaricare i file contemporaneamente, eseguire il seguente comando:
$ xargs -P 5 -n 1 curl -O < download.txtIl comando arriccia ogni riga nel file di testo 5 volte in parallelo. Il -n 1 flag assicura che il comando curl legga una riga per ogni esecuzione del comando curl.
Ed è così che esegui più richieste di curl in parallelo.