Есть ли фильтр, который я мог бы использовать для ограничения скорости канала в Linux? Если это существует, пусть это называется ограничение скорости, я хочу иметь возможность набирать в терминале что-то вроде
cat /dev/urandom | rate-limit 3 -k | foo
чтобы отправить поток случайных байтов на стандартный ввод foo со скоростью (ниже) 3 кбайт / с.
rate-limit 3k < /dev/urandom | foo
,Ответы:
Просмотрщик труб имеет эту особенность.
источник
-q
... например:command 2>&1 | pv -q -L 3k
Я бы сказал, что Джулиано получил правильный ответ если у вас есть этот инструмент, но я бы также предположил, что это изящное небольшое упражнение в стиле K & amp; R: просто напишите специализированную версию cat, которая читает по одному символу за раз
stdin
выводит каждый кstdout
а потомusleep
с, прежде чем двигаться дальше. Быть уверенным снять стандартный вывод , или это будет работать довольно резко.Я назвал это
slowcat.c
:Скомпилируйте и попробуйте с
источник
Вот решение для всех оболочек, которое не потеряет ввод (см. Идею head -1 от Mike S):
источник
дроссель кажется разработан конкретно за это. например
источник
./configure && make
,Быстро и грязно, все оболочки все время (у меня CentOS и pv не поставляется с ним по умолчанию):
... грязный, потому что, хотя он ограничен в скорости, он взрывной со скоростью, которую я не могу вам сказать :-). Но это удобно, когда вам просто нужно отправить данные из одного места в другое (я делал несколько тестов socat), и вы не хотите забивать свой экран мусором.
источник