Gewusst wie: gleichzeitige cURL-Downloads?


-1

Wie können wir mit curl mehrere Dateien gleichzeitig herunterladen? Selbst wenn wir mehrere Curl-Prozesse erzeugen müssen, wie kann ich dies über die Befehlszeile oder die Shell-Funktion tun? Zum Beispiel:

$ multiCurl <download 1> <download 2> <download 3>

multiCurl () {
  curl <download 1>
  curl <download 2>
  curl <download 3>
}

oder

for link in $(cat download.list); do
  curl <link 1>
  curl <link 2>
  curl <link 3>
  curl <link 4>
done

Antworten:


0

Vielleicht können Sie den Befehl verwenden parallel, um mehrere Dateien gleichzeitig herunterzuladen.

Hier nehme ich an, Sie behalten sich den ursprünglichen Dateinamen vor

#!/usr/bin/env bash

funcDownloadOperation(){
    link="${1:-}"
    curl -fsSL -O "${link}"
    if [[ -s "${link##*/}" ]]; then
        echo "file ${link##*/} download successfully!"
    else
        echo "fail to download link ${link}"
    fi
}

export -f funcDownloadOperation
cat download.list | parallel -k -j 0 funcDownloadOperation

Sie müssen das Dienstprogramm parallelmanuell auf Ihrem Linux-System installieren .


-1

Fügen Sie einfach &am Ende jedes Befehls hinzu, damit er im Hintergrund ausgeführt wird:

curl <link 1>&

Letztendlich hängt es davon ab, ob Sie zusätzlich wissen möchten, wann diese Befehle enden und wie ihr Rückkehrcode lautet. In diesem Fall möchten Sie Folgendes versuchen:

set -a pids # Array of the process ids of background commands
for url in $whatever_the_list_of_urls 
do
    curl $url&  # start CURL in background
    pids[${#pids[*]}]=$! # remember PID 
done

# all started, now wait for them
for pid in ${pids[*]}
do
    wait $pid 
    print "Sensed end of $pid, rc:=$?"
done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.