Під час завантаження вимкніть швидкість завантаження wget або curl


97

Чи можна придушити (обмежити) швидкість завантаження wgetабо curl?

Чи можна змінити значення дросельної заслінки під час завантаження?


3
Ні, не можна змінювати швидкість під час завантаження. Подивіться на менеджерів завантажень gui, таких як fatrat або multiget
Ульріх

3
Однак ви можете призупинити процес через SIGSTOPабо ctrl + z і відновити його пізніше за допомогою SIGCONTабо fg. Це повинно призупинити процес завантаження.
Ульріх Дангель

Цікаво, чи існує загальний спосіб заглушити будь-яку запущену програму, тобто встановити змінну середовища.
Ehtesh Choudhury

@ ulrich-dangel --limit-rate = сума
Chrips

Відповіді:


131

Так, підтримка wget і curl обмежує швидкість завантаження. Обидва варіанти безпосередньо згадуються на сторінці man.

завиток

   --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
@GautamK Ні, як і wgetне curlє інтерактивними програмами.
Ульріх Дангель

12
@GautamK Для одного великого файлу, якщо сервер його приймає, ви можете вбити wgetабо curlобробити та відновити з wget -cабо curl -C. Якщо вам дійсно потрібно перенастроїти запущений процес, використовуйте трюк з демоном - але налаштування трохи складніше. Крім того, загляньте у формування трафіку - знову ж, налаштування, якщо складна.
Жиль

4

Через 2 роки я закину цей ласощі, хоча wgetі curlне є інтерактивним, принаймні wget(і, можливо, curlале я точно не знаю) має -cперемикач (який означає продовження з того місця, де я закінчував завантаження раніше). Тож якщо вам потрібно змінити швидкість в середині завантаження, і ви, ймовірно, використовували -cперемикач із --limit-rate=xтоді, ви могли зупинитись wgetта перезапустити його з іншою швидкістю, і це зміниться.


2

Можна обмежити швидкість руху трафіку за допомогою інструментів tcта netemінструментів, але це обмежить швидкість для мережевого інтерфейсу комп'ютера. Я припускаю, що ви використовуєте лише wgetабо curlжоден інший додаток не обмінюєтеся трафіком через мережевий інтерфейс.

tc використовує фільтр Token Bucket Filter (TBF) для контролю швидкості.

Одним із прикладів TBF є наступний (посилання http://www.lartc.org/manpages/tc-tbf.html ):

Щоб приєднати TBF з витриманою максимальною швидкістю 0,5 Мбіт / с, пікатом 1,0 Мбіт / с, 5-кілобайтним буфером, з обмеженням розміру черги попереднього відра, розрахованим таким чином, що TBF спричиняє не більше 70 мс затримки, з ідеальною поведінкою пікату , проблема:

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

Немає вбудованого контролю за швидкістю дисципліни, натомість використовуйте одну з інших дисциплін, яка робить контроль швидкості. У цьому прикладі ми використовуємо фільтр 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 )

Перевірте параметри буфера та обмеження, оскільки, можливо, вам знадобляться більші за замовчуванням, ніж ці (вони знаходяться в байтах)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.