Czy istnieje filtr, którego mógłbym użyć do ograniczenia prędkości potoku na Linuksie? Jeśli to istnieje, nazwijmy to limitem prędkości, chcę móc wpisać w terminalu coś w rodzaju
cat /dev/urandom | rate-limit 3 -k | foo
w celu wysłania strumienia losowych bajtów do standardowego wejścia foo z szybkością (mniejszą niż) 3 kB / s.
rate-limit 3k < /dev/urandom | foo
.Odpowiedzi:
Przeglądarka rur ma tę funkcję.
źródło
-q
... np .:command 2>&1 | pv -q -L 3k
Powiedziałbym, że Juliano ma prawidłową odpowiedź, jeśli masz to narzędzie, ale sugerowałbym również, że jest to schludne małe ćwiczenie w stylu K&R: po prostu napisz specjalną wersję kota, który odczytuje po jednym znaku z
stdin
wyjścia przedstdout
i po każdymusleep
. Pamiętaj, aby cofnąć buforowanie standardowego wyjścia , w przeciwnym razie będzie działać dość gwałtownie.Nazwałem to
slowcat.c
:Skompiluj i spróbuj
źródło
przepustnica wydaje się specjalnie do tego zaprojektowana . na przykład
źródło
./configure && make
.Oto kompleksowe rozwiązanie, które nie utraci wkładu (por. Pomysł głowy -1 Mike'a S):
źródło
Szybko i brudnie, cały czas cały shell (mam CentOS i pv domyślnie nie ma go):
... brudne, ponieważ chociaż ma ograniczoną stawkę, jest wybuchowe w tempie, którego nie mogę ci powiedzieć :-). Ale jest to przydatne, gdy potrzebujesz tylko przesłać dane z jednego miejsca do drugiego (robiłem kilka testów towarzyskich) i nie chcesz zamaczać ekranu śmieciami.
źródło