Để tránh các --, -K/s
tình huống bạn có thể sử dụng --read-timeout=seconds
. Điều này sẽ hết thời gian kết nối sau số giây.
Nếu bạn cần đi xa hơn, bạn có thể sử dụng thiết lập này
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
Điều này sẽ thử lại các kết nối bị từ chối và các lỗi nghiêm trọng tương tự ( --retry-connrefused
), nó sẽ đợi 1 giây trước khi thử lại tiếp theo ( --waitretry
), nó sẽ đợi tối đa 20 giây trong trường hợp không nhận được dữ liệu và sau đó thử lại ( --read-timeout
), nó sẽ đợi tối đa 15 giây trước khi kết nối ban đầu hết thời gian ( --timeout
) và cuối cùng nó sẽ thử lại vô số lần ( -t 0
).
Bạn cũng có thể muốn đặt điều này trong một while
vòng lặp để tránh lỗi mạng cục bộ và tương tự. Trong trường hợp này, bạn cũng cần thêm --continue
để tiếp tục tải xuống nơi bạn rời đi. Sau đây hoạt động tốt trong 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;
Là một mẹo thưởng, bạn cũng có thể sử dụng --no-dns-cache
trong trường hợp máy chủ cân bằng yêu cầu của bạn giữa nhiều máy chủ bằng DNS.
Tuyên bố miễn trừ trách nhiệm: Tôi không khuyên bạn nên sử dụng tính năng này vì nó sẽ spam máy chủ trong trường hợp kết nối không ổn định và việc để nó không bị giám sát là không khôn ngoan. Tuy nhiên đây là những gì bạn muốn trong trường hợp bạn thực sự cần tải xuống một cái gì đó và kết nối của bạn không hoạt động đầy đủ.
--read-timeout=900
. Bạn có thể đợi 15 phút và wget sẽ khởi động lại tải xuống.