22

I want update my linux in one shell but by default wget or axel in updater use all the bandwidth.

How can I limit the speed in this shell?

I want other shells to have a fair share, and to limit everything in that shell – something like a proxy!

I use Zsh and Arch Linux.

This question focuses on process-wide or session-wide solutions. See How to limit network bandwidth? for system-wide or container-wide solutions on Linux.

Gilles 'SO- stop being evil'
  • 807,993
  • 194
  • 1,674
  • 2,175
Mohammad Efazati
  • 792
  • 8
  • 16

3 Answers3

24

Have a look at trickle a userspace bandwidth shaper. Just start your shell with trickle and specify the speed, e.g.:

trickle -d 100 zsh

which tries to limit the download speed to 100KB/s for all programs launched inside this shell.

As trickle uses LD_PRELOAD this won't work with static linked programs but this isn't a problem for most programs.

slm
  • 363,520
  • 117
  • 767
  • 871
Ulrich Dangel
  • 25,079
  • 3
  • 80
  • 80
5

http://lartc.org/wondershaper/

It is in Ubuntu / Debian repositories, probably others too. It limits not just a single shell, but the whole machine. Never tried it myself though

jippie
  • 13,756
  • 10
  • 44
  • 64
2

The man page for wget provides the following information:

 --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.

Ulrich Dangel
  • 25,079
  • 3
  • 80
  • 80
Marco Daniel
  • 781
  • 1
  • 5
  • 8