Apa cara terbaik untuk mengeksekusi 5 curl
permintaan parallel
dari skrip bash? Saya tidak bisa menjalankannya secara serial karena alasan kinerja.
Apa cara terbaik untuk mengeksekusi 5 curl
permintaan parallel
dari skrip bash? Saya tidak bisa menjalankannya secara serial karena alasan kinerja.
Jawaban:
Gunakan '&' setelah perintah untuk melatarbelakangi suatu proses, dan 'tunggu' untuk menunggu sampai selesai. Gunakan '()' di sekitar perintah jika Anda perlu membuat sub-shell.
#!/bin/bash
curl -s -o foo http://example.com/file1 && echo "done1" &
curl -s -o bar http://example.com/file2 && echo "done2" &
curl -s -o baz http://example.com/file3 && echo "done3" &
wait
xargs memiliki parameter "-P" untuk menjalankan proses secara paralel. Sebagai contoh:
wget -nv http://en.wikipedia.org/wiki/Linux -O- | egrep -o "http://[^[:space:]]*.jpg" | xargs -P 10 -r -n 1 wget -nv
Referensi: http://www.commandlinefu.com/commands/view/3269/parallel-file-downloading-with-wget
Saya menggunakan paralel gnu untuk tugas-tugas seperti ini.
curl
dengan gnu parallel
?
Berikut ini curl
contoh dengan xargs
:
$ cat URLS.txt | xargs -P 10 -n 1 curl
Contoh di atas harus curl
masing-masing URL secara paralel, 10 sekaligus. Apakah -n 1
ada sehingga xargs
hanya menggunakan 1 baris dariURLS.txt
file per curl
eksekusi.
Apa yang dilakukan masing-masing parameter xargs:
$ man xargs
-P maxprocs
Parallel mode: run at most maxprocs invocations of utility at once.
-n number
Set the maximum number of arguments taken from standard input for
each invocation of utility. An invocation of utility will use less
than number standard input arguments if the number of bytes
accumulated (see the -s option) exceeds the specified size or there
are fewer than number arguments remaining for the last invocation of
utility. The current default value for number is 5000.