Отрегулируйте скорость загрузки wget или curl при загрузке

97

Можно ли ограничить (ограничить) скорость загрузки wgetили curl?

Можно ли изменить значение газа во время загрузки?

Гаутама
источник
3
Нет, невозможно изменить скорость при загрузке. Взгляните на менеджеры загрузки графического интерфейса, такие как fatrat или multiget
Ulrich Dangel,
3
Однако вы можете приостановить процесс с помощью SIGSTOPили ctrl + z и возобновить его позже с помощью SIGCONTили fg. Это должно приостановить процесс загрузки.
Ульрих Дангел
Интересно, есть ли общий способ регулирования любой работающей программы, то есть путем установки переменной среды.
Этеш Чоудхури
@ ulrich-dangel --limit-rate = количество
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
Можно ли изменить его динамически во время загрузки?
Гаутам
2
@GautamK Нет , как ни , wgetни curlинтерактивные программы.
Ульрих Дангел
12
@GautamK Для одного большого файла, если сервер его принимает, вы можете уничтожить wgetили curlобработать или продолжить с помощью wget -cили curl -C. Если вам действительно необходимо перенастроить запущенный процесс, используйте ручеек с демоном - но настройка немного сложна. В качестве альтернативы, посмотрите на формирование трафика - опять же, если сложная настройка.
Жиль
4

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

user82611
источник
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

Другой пример использования команды 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 )

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

Абдул
источник