cstream – Online in der Cloud

Dies ist der Befehl cstream, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


cstream – direkte Datenströme mit Bandbreitenbegrenzung, FIFO, Audio, Duplizierung usw
Erweiterte Berichtsunterstützung.

ZUSAMMENFASSUNG


cstream [-b num] [-B num] [-i Dateinamen] [-I Schnur] [-l] [-n num] [-o Dateinamen] [-O Schnur]
[-p Dateinamen] [-t num] [-T num] [-v num] [-V] [Dateinamen]

BESCHREIBUNG


Cstream Filtert Datenströme, ähnlich wie das UNIX-Tool dd(1). Es wirkt eher traditionell
Befehlszeilensyntax, Unterstützung für präzise Bandbreitenbegrenzung und Berichterstellung sowie Unterstützung für
FIFOs. Die Berechnung von Datenlimits und Durchsatzraten funktioniert für Dateien > 4 GB.

Cstream liest von der Standardeingabe und schreibt in die Standardausgabe, wenn keine Dateinamen vorhanden sind
gegeben. Bei Bedarf werden auch Daten „generiert“ oder „senkt“.

Zubehör:

-b num Legen Sie die Blockgröße fest, die zum Lesen/Schreiben verwendet wird num. Der Standardwert ist 8192 Byte.

-B num Puffereingang bis zu num Bytes vor dem Schreiben. Der Standardwert ist die Blockgröße. Es ist
Es ist ein Fehler aufgetreten, dies auf einen Wert unterhalb der Blockgröße festzulegen. Nützlich beim Schreiben von Kassetten
und ähnliches, die wenige große Schreibvorgänge von vielen kleinen bevorzugen.

-c num Gleichzeitiger Betrieb. Verwenden Sie für die Ausgabe einen separaten Prozess. Dies ist besonders nützlich
in Kombination mit der Option -B.
0 = nur einen Prozess verwenden (Standard)
1 = Lesevorgang wird gepuffert
2 = Schreibvorgang wird gepuffert
3 = beide Prozesse werden gepuffert.
In Kombination mit einer großen Puffergröße belastet dies häufig Ihren Speicher
stark, jedes Mal, wenn der Leser den gesammelten Puffer an den überträgt
Schriftsteller. Wenn Sie -c 3 verwenden und eine Puffergröße von 128 Megabyte haben, sind das 256 MB
Die Erinnerung wird sofort berührt.

-i num

-o num Legen Sie die Dateinamen fest, die für die Eingabe bzw. Ausgabe verwendet werden sollen. Wenn die Ausgabedatei
Der Name ist „-“, die Daten werden einfach verworfen. Wenn der Name der Eingabedatei „-“ lautet, werden die Daten angezeigt
„aus dem Nichts“ generiert werden. Wenn diese Optionen nicht angegeben sind, wird stdin/stout angegeben
gebraucht. Wenn Sie etwas geben müssen -o or -i Optionen und wollen stdin/stdout, geben Sie die an
leere Zeichenfolge, etwa so:

cstream -i''

Wenn die TCP-Unterstützung kompiliert wurde (Standard), wird hostname:portnumber versuchen, dies zu tun
Stellen Sie eine Verbindung zum angegebenen Host am angegebenen Port her und :portnumber öffnet ein
Öffnen Sie den TCP-Socket auf dem lokalen Computer und warten Sie, bis eine Verbindung hergestellt wird. SICHERHEIT
HINWEIS: cstream enthält keinen Mechanismus, um die Hosts einzuschränken, die sich damit verbinden dürfen
Hafen. Sofern Ihr Computer nicht über andere Netzwerkfilter verfügt, kann dies jeder tun
zu verbinden.

-I Schnur

-O Schnur
Geben Sie den Typ der Eingabe- bzw. Ausgabedatei an.
Wenn Zeichenfolge
Enthält 'f', wird ein FIFO erstellt.
Wenn Zeichenfolge
Enthält „a“, wird davon ausgegangen, dass es sich bei der Datei um eine OpenSound-kompatible Audiodatei handelt
Gerät und wird auf CD-ähnliche Einstellungen umgeschaltet.
Wenn Zeichenfolge
Enthält „t“, eine Kopie des Streams wird an Dateideskriptor 3 gesendet.
Wenn Zeichenfolge
Enthält „N“, wird TCP für diese Datei nicht verwendet, selbst wenn der Name ein „:“ enthält.

-l Beziehen Sie die Zeilenanzahl in die Statistik ein.

-n num Begrenzen Sie die Gesamtdatenmenge auf num. Wenn mehr Eingaben verfügbar sind, wird dies der Fall sein
weggeworfen werden, cstream wird beendet, nachdem das Limit erreicht wurde. Wenn es weniger gibt
Eingang wird der Grenzwert nicht erreicht und es wird kein Fehler gemeldet.

num kann ein nachgestelltes „k“, „m“ oder „g“ haben, was Kilobyte, Megabyte oder bedeutet
Gigabyte (wobei Kilo = 1024). Dies gilt für alle numerischen Optionen.

-p Dateinamen
Schreiben Sie die Prozess-ID von cstream in Dateinamen. Wenn cstream einen separaten Writer verwendet
Prozess (Option -c), dies ist die PID des übergeordneten (Leser-)Prozesses.

-t num Begrenzen Sie den Durchsatz des Datenstroms auf num Bytes/Sekunde. Die Begrenzung erfolgt bei
Auf der Eingabeseite können Sie sich darauf verlassen, dass cstream nicht mehr als diese Rate akzeptiert. Wenn die
Wenn die von Ihnen angegebene Zahl positiv ist, sammelt cstream Fehler und versucht, diese beizubehalten
Gesamtrate zum angegebenen Wert für die gesamte Sitzung. Wenn Sie ein Negativ geben
Anzahl ist eine Obergrenze für jedes Lese-/Schreibsystemaufrufpaar. Mit anderen Worten:
Die negative Zahl wird diese Grenze nie überschreiten, die positive Zahl wird sie überschreiten
Es soll eine frühere Unterauslastung ausgleichen.

-T num Melden Sie den Durchsatz alle num Sekunden.

-v num Stellen Sie die Ausführlichkeitsstufe auf ein num. Standardmäßig ist es auf 0 gesetzt, was bedeutet, dass keine Nachrichten vorhanden sind
angezeigt, solange keine Fehler auftreten. Ein Wert von 1 bedeutet die Gesamtdatenmenge
und Durchsatz werden am Ende des Programmlaufs angezeigt. Ein Wert von 2 bedeutet
Außerdem wird die Übertragungsrate seit dem Ende des ersten Lese-/Schreibpaares gemeldet
(nützlich, wenn es zu Beginn zu einer Verzögerung kommt). Ein Wert von 3 bedeutet, dass dies auch der Fall sein wird
getrennte Messungen für Lesen und Schreiben. Diese Option ist ressourcenintensiv und
ist derzeit nicht implementiert. Ein Wert von 4 bedeutet, dass es Hinweise auf jede einzelne gibt
Lesen/Schreiben wird angezeigt. Hohe Werte umfassen alle Nachrichtentypen niedrigerer
Werte.

-V Versionsnummer auf stdout ausgeben und mit 0 beenden.

Dateinamen Als letztes Argument wird ein einzelner Dateiname ohne Optionsschalter verwendet
Eingabedatei, wenn -i nicht verwendet wurde.

SIGUSR1

SIGNINFO Senden von SIGUSR1 (oder SIGINFO, das normalerweise Strg-T auf Ihrer Tastatur zugeordnet ist)
to cstream bewirkt, dass die Durchsatzraten auf stderr angezeigt werden. Der Stream wird
Machen Sie weiter, als ob nichts passiert wäre.

SIGUSR2 Exit- und Report-Durchsatzraten, falls gewünscht.

SEUFZEND Ich habe versehentlich zu oft SIGHUP gesendet. Aber ignorieren oder missbrauchen
SIGHUP ist für mich keine Option. Also wann cstream SIGHUP empfangen, es wird 5 warten
Sekunden für ein weiteres SIGHUP, um Benutzern die Möglichkeit zu geben, einen möglichen Fehler zu korrigieren.
Wenn kein zusätzliches SIGHUP empfangen wird, cstream bringt sich mit SIGHUP um.

Beispiele:


cstream -o Datei -v 1 -n 384m -i -
Schreibt 384 Megabyte nicht spezifizierter Daten in eine Datei Datei und ausführlich anzeigen
Durchsatzrate. Ein guter Maßstab ist die Geschwindigkeit / dev / null variiert zu sehr von
System zu System.

cstream -i Datei -v 1 -n 384m -o -
Lesen Sie dieselbe Datei erneut ein und verwerfen Sie die Daten.

cstream -b 2000 -t 10000 / var / log / Nachrichten
Zeigt die Datei in mehr oder weniger anschaulicher Geschwindigkeit an.

abladen 0sf 400000 - / | cstream -v 1 -b 32768 -o /dev/rst0 -p pid-Datei

töten -USR1 „Katze pidfile`
Schreiben Sie die Ausgabe von abladen(1) auf Band. Jedes Mal, wenn das Signal gesendet wird, erhöht sich der Durchsatz
Die bisherige Datenrate wird angezeigt.

cstream -t 176400 -i /dev/dsp0 -I f -o -
Erstellt eine Art Soundkarten-Emulator, der zum Testen von Audioanwendungen verwendet werden kann
Ich brauche etwas zum Schreiben, das die Datenrate begrenzt, wie es bei einer echten Soundkarte der Fall ist. Das
funktioniert offensichtlich nicht, wenn die Anwendung versucht, Daten mit zu schreiben mmap(2) und
Die Anwendung muss Fehler ignorieren, wenn sie versucht, Soundkartenparameter festzulegen
ioctls(2).

cstream -t 176400 -i /dev/dsp0 -I f -o /dev/dsp1 -O f
Ähnlicher Soundkarten-Emulator, außer dass Sie damit Ihre Daten abrufen können
Anwendungen, die vom anderen FIFO an ihn gesendet werden, und haben dennoch ein präzises Timing.

cstream -Oa -o /dev/dsp0 meinhost.meinedomain.com:17324
Verbindet Port 3333 auf dem Host myhost.mydomain.com und alle dort gefundenen Daten
an die Soundkarte gesendet werden, mit den entsprechenden Einstellungen für Stereo-Wiedergabe in CD-Qualität.

cstream -i myaudiofile.raw -o : 17324
Dadurch wird ein TCP-Server auf Port 17324 geöffnet und gewartet, bis jemand eine Verbindung herstellt (z
(Beispiel: die Befehlszeile aus dem vorherigen Beispiel). Anschließend wird der Inhalt gesendet
von myaudiofile.raw entlang des TCP-Streams (für das vorherige Audiobeispiel normalerweise a
CD-Audiotrack, wie Sie ihn von den Dienstprogrammen tosha oder cdparanoia erhalten.

cstream -OD -o meine Datei

Schreiben Sie mit O_DIRECT in die Datei myfile. Das bedeutet normalerweise, dass der Dateisystempuffer
Cache versucht nicht, diese Datei zwischenzuspeichern. Damit können Sie das Kopieren verhindern
Operationen durch das Auffressen des physischen Speichers. Beachten Sie, dass cstream auf a trifft
Bei einem Schreibfehler wird die Ausgabedatei von O_DIRECT in eine normale Datei umgewandelt und geschrieben
alle weiteren Blöcke ohne O_DIRECT, wenn Schreibvorgänge ohne O_DIRECT erfolgreich sind. In der Praxis
Das bedeutet normalerweise, dass Ihr letzter Block, wenn nicht sogar ein Vielfaches des Dateisystemblocks
Größe wird weiterhin in die Datei geschrieben (die maximale Menge an geschriebenen Daten).
ohne O_DIRECT ist Ihre Blockgröße minus eins). Auf diese Weise stellt cstream sicher, dass die
Die Ausgabedatei hat die Länge der Eingabe, egal wie ungerade die Länge war und egal
welche Einschränkungen Ihr Betriebssystem der O_DIRECT-Ausgabe auferlegt. Auch hier wird cstream *nicht* auffüllen
Wenn Sie die Ausgabe auf die Blockgröße umstellen, erhalten Sie die gleiche Datei und Dateigröße wie bei Nichtverwendung
O_DIRECT, auf Kosten des Wechsels zu Nicht-O_DIRECT, wenn ein Block nicht der richtige ist
Größe.

cstream -i : 3333 | dd obs=8192 | ./cstream -omyfile -v7 -OD
Dies ist, was Sie tun müssen, um die TCP-Eingabe zu puffern, damit der letzte cstream dies nicht tut
Wechseln Sie aufgrund kurzer Lesevorgänge vorzeitig von O_DIRECT ab. Wenn Ihre Eingabe reicht
kurze Lesevorgänge (z. B. von TCP) und Sie möchten sicherstellen, dass O_DIRECT wirksam bleibt,
Sie benötigen einen Puffer zwischen dem TCP-Stream und dem O_DIRECT-Stream. Seit cstream
unterstützt noch keine unterschiedlichen Ein- und Ausgabeblockgrößen, dd ist hier geeignet.
Beachten Sie, dass dies nur erforderlich ist, wenn das Betriebssystem ein Vielfaches des Dateisystems erfordert
Blockgröße für O_DIRECT. Zum Zeitpunkt des Verfassens dieses Artikels wird dieses Konstrukt benötigt
Linux für die Verwendung von TCP-Streams mit O_DIRECT, wird jedoch unter FreeBSD nicht benötigt.

cstream -KNOCHEN -o meine Datei
Schreibt mit O_SYNC in die Datei myfile. Das heißt, bis der Systemaufruf zurückkehrt
Es ist bekannt, dass sich die Daten auf der Festplatte befinden. Dies ist nicht dasselbe wie O_DIRECT. O_DIRECT
kann seine eigene Pufferung durchführen, bei O_SYNC gibt es überhaupt keine Pufferung. Zur Zeit von
Während ich dies schreibe, ist O_SYNC sowohl unter Linux als auch unter FreeBSD sehr langsam (1/5 bis 1/10).
normales Schreiben) und O_DIRECT ist einigermaßen schnell (1/4 bis 1/2 des normalen Schreibens). Du
kann O_SYNC und O_DIRECT kombinieren.

FEHLER


Exit-Code 0 bedeutet Erfolg.

Exit-Code 1 bedeutet einen Fehler bei der Verwendung der Befehlszeilensyntax.

Exit-Code 2 bedeutet andere Fehler, insbesondere Systemfehler.

Fehler


Es sollte eine Option geben, direkt nach dem Ende des ersten Lesevorgangs mit dem Schreiben zu beginnen und dann zu füllen
Der Puffer liest im Hintergrund. Im Moment beginnt das Schreiben nicht vor dem Leser
hat den Puffer zum ersten Mal vollständig gefüllt.

Kein Fehler: Der Code für O_DIRECT ist einigermaßen ausgefeilt. Es wird wieder normal
I/O bei Fehlern. Zuvor kennt es jedoch die Blockgrößenanforderungen beider Dateisysteme
(stellt die E/A-Blockgröße standardmäßig auf das Dateisystem der Ausgabedatei ein) und Seite
Ausrichtungsanforderungen (E/A erfolgt über einen seitenausgerichteten Puffer). Allerdings ist die
Die Kombination aus gleichzeitigen Lese-/Schreibvorgängen (-c-Optionen) und O_DIRECT wurde darüber hinaus nicht getestet
Grundlegende Überprüfung, ob einige Tests richtig sind.

Nutzen Sie cstream online über die Dienste von onworks.net



Neueste Linux- und Windows-Online-Programme