Ограничение использования полосы пропускания Интернет определенной оболочкой

21

Я хочу обновить мой Linux в одной оболочке, но по умолчанию wget или axel в Updater используют всю пропускную способность.

Как я могу ограничить скорость в этой оболочке?

Я хочу, чтобы другие оболочки имели справедливую долю и ограничивали все в этой оболочке - что-то вроде прокси!

Я использую Zsh и Arch Linux.

Этот вопрос фокусируется на решениях для всего процесса или сессии. См. Как ограничить пропускную способность сети? для общесистемных или контейнерных решений в Linux.

Мухаммед Эфазати
источник

Ответы:

22

Взгляните на струйку формирователя пропускной способности пространства пользователя. Просто запустите вашу оболочку с помощью струйки и укажите скорость, например:

trickle -d 100 zsh

который пытается ограничить скорость загрузки до 100 КБ / с для всех программ, запускаемых внутри этой оболочки.

Поскольку Trickle использует LD_PRELOADэто, он не будет работать со статически связанными программами, но это не проблема для большинства программ.

Ульрих Дангел
источник
Обратите внимание, что он ограничен сокетами SOCK_STREAMS, поэтому, например, не влияет на трафик UDP.
Стефан Шазелас
5

http://lartc.org/wondershaper/

Это в репозиториях Ubuntu / Debian, возможно, и в других. Он ограничивает не одну оболочку, а всю машину. Никогда сам не пробовал

jippie
источник
2

Страница man дляwget предоставляет следующую информацию:

 --limit-rate=amount

Ограничьте скорость загрузки до количества байтов в секунду. Сумма может быть выражена в байтах, килобайтах с суффиксом k или мегабайтах с суффиксом m. Например, --limit-rate = 20k ограничит скорость поиска до 20 КБ / с. Это полезно, когда по какой-либо причине вы не хотите, чтобы Wget использовал всю доступную полосу пропускания.

Марко Даниэль
источник
Обновление вопроса: я хочу, чтобы все заявки были ограничены, не только wget
Мохаммед Эфазати
@Efazati: Извините, я не знаю, как установить его в целом. Я использую его только для wget и apt-get.
Марко Даниэль
не обижайся, просто жди ответа;)
Мухаммед Эфазати