Gibt es einen Filter, den ich verwenden könnte, um eine Pipe unter Linux einzuschränken? Wenn dies existiert, nennen wir es rate-limit, ich möchte in der Lage sein, ein Terminal so etwas wie einzugeben
cat /dev/urandom | rate-limit 3 -k | foo
um einen Strom von zufälligen Bytes mit einer Geschwindigkeit (unter 3 kByte / s) an die Standardeingabe von foo zu senden.
rate-limit 3k < /dev/urandom | foo
.Antworten:
Pipe Viewer hat diese Funktion.
quelle
-q
command 2>&1 | pv -q -L 3k
Ich würde sagen, dass Juliano die richtige Antwort hat, wenn Sie dieses Tool haben, aber ich würde auch vorschlagen, dass dies eine nette kleine Übung im K & R-Stil ist: Schreiben Sie einfach eine spezialisierte Version von cat, die jeweils ein Zeichen liest
stdin
und ausgibt jeweils zustdout
und dannusleep
s, bevor Sie weitermachen. Achten Sie darauf , die Standardausgabe zu entpuffern , da dies sonst zu ruckartigen Ergebnissen führt.Ich nannte das
slowcat.c
:Kompiliere es und versuche es mit
quelle
Gaspedal scheint speziell dafür ausgelegt. z.B
quelle
./configure && make
.Hier ist eine All-Shell-Lösung, bei der keine Eingaben verloren gehen (vgl. Die Idee head -1 von Mike S):
quelle
Schnell und dreckig, die ganze Zeit Shell (ich habe CentOS und pv wird standardmäßig nicht mitgeliefert):
... dreckig, denn obwohl die Rate begrenzt ist, ist es mit einer Rate platzen, die ich dir nicht sagen kann :-). Aber es ist praktisch, wenn Sie nur Daten von einem Ort zum anderen senden müssen (ich habe einige Socat-Tests durchgeführt) und Ihren Bildschirm nicht mit Müll überschwemmen möchten.
quelle