So stellen Sie wget auf ein Timeout ein, wenn der Download länger als eine festgelegte Dauer dauert

So stellen Sie wget auf ein Timeout ein, wenn der Download länger als eine festgelegte Dauer dauert

Ich möchte, dass wget (versucht) den Download zu starten. Wenn der Download nach 10 Sekunden nicht abgeschlossen ist, soll es aufgeben.

wget --timeout 10 http://url

Scheint ein vernünftiger Versuch zu sein, aber es scheint, als ob nur --dns-timeout, --connect-timeout und --read-timeout festgelegt werden. Daher könnte es 9 Sekunden auf DNS warten, weitere 9 auf Connect und dann für immer mit dem Herunterladen fortfahren, solange die Daten in gleichmäßigem Tempo eingehen (keine Pause von mehr als 10 Sekunden).

Antwort1

Im Grunde wird das ungefähr so ​​aussehen:

wget http://www.somesite.com/file.zip &
PID=$!
sleep 10
if [ `ps ax | grep $PID` -ne '' ]
   then
   kill $PID
fi

Antwort2

Das ist nichtgenauwas Sie fragen, da dies nur dann zu einem Timeout von Wget führen sollte, wenn der Download länger als 10 Sekunden im Leerlauf ist:

wget --read-timeout= 10 http://url

Über die --read-timeoutOption, aus demWget 1.13.4 Handbuch:

Stellen Sie das Timeout für Lesen (und Schreiben) auf Sekunden ein. Die „Zeit“ dieses Timeouts bezieht sich auf die Leerlaufzeit: Wenn zu irgendeinem Zeitpunkt des Downloads länger als die angegebene Anzahl von Sekunden keine Daten empfangen werden, schlägt das Lesen fehl und der Download wird neu gestartet. Diese Option wirkt sich nicht direkt auf die Dauer des gesamten Downloads aus.

verwandte Informationen