ในการสั่งซื้อเพื่อหลีกเลี่ยงสถานการณ์ที่คุณสามารถใช้--, -K/s --read-timeout=secondsการทำเช่นนี้จะหมดเวลาการเชื่อมต่อหลังจากจำนวนวินาที
หากคุณต้องการทำมากกว่านั้นคุณสามารถใช้การตั้งค่านี้
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
การดำเนินการนี้จะลองปฏิเสธการเชื่อมต่อและข้อผิดพลาดร้ายแรงที่คล้ายกัน( --retry-connrefused) จะรอ 1 วินาทีก่อนลองอีกครั้ง ( --waitretry) จะรอสูงสุด 20 วินาทีในกรณีที่ไม่มีการรับข้อมูลจากนั้นลองอีกครั้ง ( --read-timeout) จะรอสูงสุด 15 วินาที ก่อนการเชื่อมต่อเริ่มต้นหมดเวลา ( --timeout) และในที่สุดมันจะลองอีกครั้งโดยไม่มีที่สิ้นสุดจำนวนครั้ง ( -t 0)
คุณอาจต้องการใส่สิ่งนี้ไว้ในwhileลูปเพื่อหลีกเลี่ยงความล้มเหลวของเครือข่ายในพื้นที่และในลักษณะเดียวกัน ในกรณีนี้คุณต้องเพิ่ม--continueเพื่อดำเนินการดาวน์โหลดต่อจากที่ค้างไว้ ต่อไปนี้ทำงานได้ดีใน 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;
เป็นเคล็ดลับโบนัสที่คุณสามารถใช้--no-dns-cacheในกรณีที่โฮสต์ยอดคงเหลือคำขอของคุณระหว่างเซิร์ฟเวอร์หลายเครื่องโดย DNS
ข้อจำกัดความรับผิดชอบ: ฉันไม่แนะนำให้ใช้สิ่งนี้เนื่องจากมันจะทำการโฮสต์ในกรณีที่การเชื่อมต่อไม่เสถียรและมันไม่ฉลาดที่จะปล่อยให้มันไม่ถูกตรวจสอบ อย่างไรก็ตามนี่คือสิ่งที่คุณต้องการในกรณีที่คุณต้องการดาวน์โหลดบางสิ่งบางอย่างและการเชื่อมต่อของคุณไม่ทำงานอย่างเพียงพอ
--read-timeout=900โดยค่าเริ่มต้น คุณสามารถรอ 15 นาทีและ wget จะเริ่มการดาวน์โหลดใหม่