เค้นความเร็วในการดาวน์โหลดของ wget หรือขดขณะดาวน์โหลด


97

เป็นไปได้ไหมที่จะ จำกัด ความเร็วในการดาวน์โหลดของwgetหรือcurl?

เป็นไปได้หรือไม่ที่จะเปลี่ยนค่าเค้นในขณะที่กำลังดาวน์โหลด?


3
ไม่ไม่สามารถเปลี่ยนความเร็วขณะดาวน์โหลดได้ ดูผู้จัดการดาวน์โหลดของ gui เช่น fatrat หรือ multiget
Ulrich Dangel

3
อย่างไรก็ตามคุณสามารถระงับกระบวนการทางSIGSTOPหรือ ctrl + z และดำเนินการต่อในภายหลังด้วยSIGCONTหรือ fg นี่ควรหยุดกระบวนการดาวน์โหลดชั่วคราว
Ulrich Dangel

ฉันสงสัยว่ามีวิธีทั่วไปในการเร่งโปรแกรมที่กำลังทำงานอยู่หรือไม่นั่นคือการตั้งค่าตัวแปรสภาพแวดล้อม
Ehtesh Choudhury

@ ulrich-dangel --limit-rate = amount
Chrips

คำตอบ:


131

ใช่รองรับทั้ง wget และ curl จำกัด อัตราการดาวน์โหลดของคุณ ตัวเลือกทั้งสองจะกล่าวถึงโดยตรงในหน้าคน

ขด

   --limit-rate <speed>
          Specify the maximum transfer rate you want curl to use. 
           This feature is useful  if you  have a limited pipe and 
           you'd like your transfer not to use your entire bandwidth.

          The given speed is measured in bytes/second, unless a suffix 
          is appended.  Appending  'k'  or 'K' will count the number
          as kilobytes, 'm' or M' makes it megabytes, while 'g' or 'G' 
          makes it gigabytes. Examples: 200K, 3m and 1G.

เช่น: curl --limit-rate 423K

wget

   --limit-rate=amount
       Limit the download speed to amount bytes per second.  Amount may
       be expressed in bytes, kilobytes with the k suffix, or 
       megabytes with the m suffix.  For example, --limit-rate=20k will limit 
       the retrieval rate to 20KB/s.  This is useful when, for
       whatever reason, you don't want Wget to consume 
       the entire available bandwidth.

เช่น: wget --limit-rate=423k


2
เป็นไปได้ไหมที่จะเปลี่ยนเป็นแบบไดนามิกในขณะที่การดาวน์โหลดกำลังดำเนินอยู่
Gautam

2
@GautamK ไม่เป็นค่าwgetมิได้curlเป็นโปรแกรมแบบโต้ตอบ
Ulrich Dangel

12
@GautamK สำหรับไฟล์ขนาดใหญ่หนึ่งถ้าเซิร์ฟเวอร์รับมันคุณสามารถฆ่าwgetหรือcurlกระบวนการและดำเนินการด้วยหรือwget -c curl -Cหากคุณต้องการกำหนดค่ากระบวนการทำงานใหม่ให้ใช้แบบหยดกับ daemon - แต่การติดตั้งค่อนข้างซับซ้อน อีกวิธีหนึ่งคือตรวจสอบปริมาณข้อมูล - อีกครั้งการตั้งค่าหากมีความซับซ้อน
Gilles

4

2 ปีต่อมาฉันจะโยนชิ้นอาหารอันโอชะนี้ในขณะที่wgetและcurlไม่ได้มีการโต้ตอบอย่างน้อยwget(และอาจจะcurlแต่ฉันไม่ทราบแน่นอน) มี-cสวิตช์ (ซึ่งย่อมาจากการที่ฉันออกจากการดาวน์โหลดก่อนหน้านี้) ดังนั้นหากคุณต้องการเปลี่ยนความเร็วของคุณในระหว่างการดาวน์โหลดและคุณใช้-cสวิทช์กับสวิตช์--limit-rate=xแล้วคุณสามารถหยุดwgetและรีสตาร์ทด้วยความเร็วที่แตกต่างกันและมันจะเปลี่ยน


2

เป็นไปได้ที่จะ จำกัด อัตราการเข้าชมโดยใช้tcและnetemเครื่องมือ แต่จะ จำกัด อัตราสำหรับอินเทอร์เฟซเครือข่ายของคอมพิวเตอร์ ฉันกำลังสมมติว่าคุณใช้เฉพาะwgetหรือcurlไม่มีแอพลิเคชันอื่น ๆ แลกเปลี่ยนการจราจรผ่านเครือข่ายอินเตอร์เฟซ

tc ใช้ Token Bucket Filter (TBF) เพื่อควบคุมอัตรา

ตัวอย่างหนึ่งของ TBF จะเป็นดังนี้ (ref. http://www.lartc.org/manpages/tc-tbf.html ):

ในการติดตั้ง TBF ด้วยอัตราสูงสุด 0.5mbit / s, ค่าสูงสุด 1.0mbit / s, บัฟเฟอร์ 5kilobyte, โดยมีขีด จำกัด ขนาด pre-bucket ที่คำนวณเพื่อให้ TBF เกิดการแฝงตัวที่ 70ms ที่สุด, โดยมีพฤติกรรมที่สมบูรณ์แบบสูงสุด , ปัญหา:

# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540

ตัวอย่างของ usign tc และ netem จะเป็นดังนี้ (พบได้ในhttp://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

ไม่มีการควบคุมอัตราภายในวินัย netem แทนที่จะใช้หนึ่งในสาขาวิชาอื่น ๆ ที่จะทำการควบคุมอัตรา ในตัวอย่างนี้เราใช้ Token Bucket Filter (TBF) เพื่อ จำกัด เอาต์พุต

เพื่อเพิ่มความล่าช้าของแต่ละแพ็คเก็ตไป / มาผ่านอินเตอร์เฟส eth0

 # tc qdisc add dev eth0 root handle 1:0 netem delay 100ms

เพื่อเพิ่มอัตราข้อมูลเป็น tbf ขนาดบัฟเฟอร์แพ็คเก็ตและขีด จำกัด การระเบิดสูงสุด

 # tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000

หากต้องการดูรายการของกฎที่กำหนดใน tc สำหรับอินเตอร์เฟส eth0

 # tc -s qdisc ls dev eth0

ผลลัพธ์ของคำสั่งดังกล่าวจะเป็นด้านล่าง

 qdisc netem 1: limit 1000 delay 100.0ms
  Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
 qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
  Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )

ตรวจสอบตัวเลือกสำหรับบัฟเฟอร์และ จำกัด ตามที่คุณอาจพบว่าคุณต้องการค่าเริ่มต้นที่ใหญ่กว่านี้ (มีหน่วยเป็นไบต์)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.