Aby uniknąć --, -K/s
sytuacji, których możesz użyć --read-timeout=seconds
. Spowoduje to przekroczenie limitu czasu połączenia po upływie kilku sekund.
Jeśli chcesz wyjść poza to, możesz skorzystać z tej konfiguracji
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
Spowoduje to ponowienie próby odrzucenia połączeń i podobnych błędów krytycznych ( --retry-connrefused
), odczeka 1 sekundę przed kolejną próbą ( --waitretry
), odczeka maksymalnie 20 sekund w przypadku braku danych, a następnie spróbuje ponownie (--read-timeout
), poczeka maksymalnie 15 sekund przed początkowym limitem czasu połączenia ( --timeout
) i na końcu spróbuje powtórzyć nieskończoną liczbę razy ( -t 0
).
Możesz także umieścić to w while
pętli, aby uniknąć awarii sieci lokalnej i tym podobnych. W takim przypadku musisz również dodać --continue
, aby kontynuować pobieranie od miejsca, w którym zostało przerwane. Następujące działa dobrze w Bash
while [ 1 ]; do
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
if [ $? = 0 ]; then break; fi; # check return value, break if successful (0)
sleep 1s;
done;
Jako wskazówkę dodatkową możesz także użyć --no-dns-cache
z opcji równoważenia żądania hosta między wieloma serwerami przez DNS.
Oświadczenie: Nie polecam korzystania z tego, ponieważ spowoduje to spam hosta w przypadku, gdy połączenie jest niestabilne i niemądrze jest pozostawiać go bez nadzoru. Jednak tego właśnie chcesz, jeśli naprawdę musisz coś pobrać, a twoje połączenie nie działa odpowiednio.
--read-timeout=900
. Możesz poczekać 15 minut, a wget ponownie rozpocznie pobieranie.