डाउनलोड करते समय wget या curl की डाउनलोड स्पीड को थ्रॉटल करें


97

क्या डाउनलोड की गति को थ्रॉटल (सीमा) करना संभव है wgetया curl?

क्या डाउनलोड करते समय थ्रॉटल वैल्यू को बदलना संभव है?


3
नहीं, डाउनलोड करते समय गति को बदलना संभव नहीं है। मोटी या मल्टीगेट जैसे गिटार डाउनलोड प्रबंधकों पर एक नजर है
उलरिक

3
हालाँकि आप प्रक्रिया को SIGSTOPctrl + z के माध्यम से स्थगित कर सकते हैं और बाद में SIGCONTया fg के साथ फिर से शुरू कर सकते हैं । यह डाउनलोड प्रक्रिया को रोकना चाहिए।
उलरिच डांगेल

मुझे आश्चर्य है कि अगर किसी पर्यावरण कार्यक्रम को स्थापित करने के माध्यम से किसी भी चल रहे कार्यक्रम को समाप्त करने का एक सामान्य तरीका है।
एहतेश चौधरी

@ ulrich-dangel - प्रारंभिक-दर = राशि
Chrips

जवाबों:


131

हां, आपके डाउनलोड दर को सीमित करने के लिए विग और कर्ल दोनों का समर्थन है। दोनों विकल्प सीधे मैन पेज में उल्लिखित हैं।

कर्ल

   --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
क्या यह संभव है कि इसे डाउनलोड करते समय गतिशील रूप से बदला जाए?
गौतम

2
@ गौतम के रूप में न तो wgetऔर न ही curlइंटरैक्टिव कार्यक्रम हैं।
उलरिक डांगेल

12
@ गौतम एक बड़ी फ़ाइल के लिए, यदि सर्वर इसे स्वीकार करता है, तो आप wgetया curlप्रक्रिया को मार सकते हैं और फिर से शुरू कर wget -cसकते हैं curl -C। यदि आपको वास्तव में एक चालू प्रक्रिया को फिर से कॉन्फ़िगर करने की आवश्यकता है, तो डेमॉन के साथ ट्रिकल का उपयोग करें - लेकिन सेटअप थोड़ा जटिल है। वैकल्पिक रूप से, ट्रैफ़िक को आकार देने में देखें - फिर से, यदि जटिल हो तो सेटअप करें।
गाइल्स

4

2 साल बाद मैं, थोड़ी देर में इस tidbit फेंक देते हैं wgetऔर curlइंटरैक्टिव नहीं हैं कम से कम, wget(और संभवतः curlलेकिन मुझे यकीन है कि के लिए पता नहीं है) है -cस्विच (जो जहां मैंने पहले डाउनलोड करने छोड़ा था वहीं से जारी रखने के लिए के लिए खड़ा है)। इसलिए यदि आपको डाउनलोड के बीच में अपनी गति को बदलने की आवश्यकता है और आपने तब -cस्विच का उपयोग किया है, --limit-rate=xतो आप wgetइसे रोक सकते हैं और इसे अलग गति से पुनः आरंभ कर सकते हैं और यह बदल जाएगा।


2

tcऔर netemटूल का उपयोग करके ट्रैफ़िक दर को सीमित करना संभव है, लेकिन यह कंप्यूटर के नेटवर्क इंटरफ़ेस के लिए दर को सीमित कर देगा। मैं मान रहा हूं कि आप केवल wgetया curlकिसी अन्य एप्लिकेशन का उपयोग करते हैं और नेटवर्क इंटरफ़ेस के माध्यम से ट्रैफ़िक का आदान-प्रदान कर रहे हैं।

tc दर को नियंत्रित करने के लिए टोकन बकेट फ़िल्टर (टीबीएफ) का उपयोग करता है।

टीबीएफ का एक उदाहरण इस प्रकार होगा (रेफरी। Http://www.lartc.org/manpages/tc-tbf.html ):

एक टीबीएफ को 0.5mbit / s की अधिकतम अधिकतम दर के साथ संलग्न करने के लिए, 1.0mbit / s की एक चोटी, 5kilobyte बफर, एक प्री-बकेट कतार आकार की सीमा के साथ गणना की जाती है, इसलिए 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 में पाया गया ):

नेटम अनुशासन में कोई दर नियंत्रण नहीं है, इसके बजाय दर नियंत्रण करने वाले अन्य विषयों में से एक का उपयोग करें। इस उदाहरण में, हम आउटपुट को सीमित करने के लिए टोकन बकेट फ़िल्टर (टीबीएफ) का उपयोग करते हैं।

इंटरफ़ेस 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

इंटरफ़ेस eth0 के लिए tc में निर्दिष्ट नियमों की सूची देखने के लिए

 # 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 )

बफर और सीमा के विकल्पों पर जाँच करें क्योंकि आपको लग सकता है कि आपको इनकी तुलना में बड़ी चूक की आवश्यकता है (वे बाइट्स में हैं)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.