GNU/Linux >> Belajar Linux >  >> Linux

Unduhan paralel menggunakan utilitas baris perintah Curl

Nah, curl hanyalah proses UNIX sederhana. Anda dapat memiliki sebanyak mungkin curl ini proses berjalan secara paralel dan mengirimkan keluarannya ke file yang berbeda.

curl dapat menggunakan bagian nama file dari URL untuk menghasilkan file lokal. Cukup gunakan -O opsi (man curl untuk detail).

Anda dapat menggunakan sesuatu seperti berikut

urls="http://example.com/?page1.html http://example.com?page2.html" # add more URLs here

for url in $urls; do
   # run the curl job in the background so we can start another job
   # and disable the progress bar (-s)
   echo "fetching $url"
   curl $url -O -s &
done
wait #wait for all background jobs to terminate

Jawaban saya agak terlambat, tetapi saya yakin semua jawaban yang ada sedikit kurang. Cara saya melakukan hal-hal seperti ini adalah dengan xargs , yang mampu menjalankan sejumlah perintah tertentu dalam subproses.

One-liner yang akan saya gunakan adalah, cukup:

$ seq 1 10 | xargs -n1 -P2 bash -c 'i=$0; url="http://example.com/?page${i}.html"; curl -O -s $url'

Ini memerlukan beberapa penjelasan. Penggunaan -n 1 menginstruksikan xargs untuk memproses argumen input tunggal pada satu waktu. Dalam contoh ini, angka 1 ... 10 masing-masing diproses secara terpisah. Dan -P 2 memberi tahu xargs untuk menjaga 2 subproses berjalan sepanjang waktu, masing-masing menangani satu argumen, sampai semua argumen masukan telah diproses.

Anda dapat menganggap ini sebagai MapReduce di shell. Atau mungkin hanya fase Peta. Terlepas dari itu, ini adalah cara yang efektif untuk menyelesaikan banyak pekerjaan sambil memastikan bahwa Anda tidak merusak mesin Anda. Dimungkinkan untuk melakukan sesuatu yang serupa dalam for loop di shell, tetapi akhirnya melakukan manajemen proses, yang mulai tampak tidak berguna setelah Anda menyadari betapa hebatnya penggunaan xargs ini adalah.

Pembaruan:Saya menduga contoh saya dengan xargs dapat ditingkatkan (setidaknya di Mac OS X dan BSD dengan -J bendera). Dengan GNU Parallel, perintahnya juga tidak terlalu berat:

parallel --jobs 2 curl -O -s http://example.com/?page{}.html ::: {1..10}

Linux
  1. 4 alat untuk mengunduh file apa pun menggunakan baris perintah di Linux

  2. Bagaimana cara mengunduh file dari baris perintah menggunakan perintah wget?

  3. Copot pemasangan Node.JS menggunakan baris perintah Linux?

  1. Menggunakan kekuatan di baris perintah Linux

  2. Unduh Video YouTube di Baris Perintah Linux Menggunakan youtube-dl

  3. Menggunakan sertifikat klien dalam perintah Curl

  1. Cara Shutdown atau Reboot Linux menggunakan Command Line

  2. Unduh File di Ubuntu Menggunakan Command Line di sistem Ubuntu 20.04

  3. Bagaimana Cara Mengunduh Situs Ftp Utuh Menggunakan Baris Perintah?