Scroll to navigation

PIPESZ(1) Dienstprogramme für Benutzer PIPESZ(1)

BEZEICHNUNG

pipesz - Pipe- und FIFO-Puffergrößen festlegen oder untersuchen

ÜBERSICHT

pipesz [options] [--set size] [--] [command [argument...]]

pipesz [options] --get

BESCHREIBUNG

Pipes und FIFOs verwalten einen internen Puffer, der zum Übertragen von Daten zwischen der Leseseite und der Schreibseite verwendet wird. In einigen Fällen kann die Standardgröße dieses internen Puffers den Erfordernissen nicht entsprechen. Dieses Programm bietet Möglichkeiten, die Größe dieser Puffer zu setzen und zu untersuchen.

The --set operation sets pipe buffer sizes. If it is specified, it must be specified with an explicit size. Otherwise, it is implied and the size is read from /proc/sys/fs/pipe-max-size. The kernel may adjust size as described in fcntl(2). To see the actual buffer sizes that get set, use the --verbose option. If neither --file nor --fd are specified, --set acts on standard output.

Die Option --set ermöglicht die Übergabe eines optionalen Befehls zur Ausführung nach dem Festlegen der Pipe-Puffergrößen. Dieser Befehl wird auf die angepassten Pipes angewendet.

Die Operation --get gibt Daten in tabellarischer Form aus. Die erste Spalte enthält den Namen der Pipe, wie sie an pipesz übergeben wurde. Dateideskriptoren werden als »fd N« bezeichnet. Die zweite Spalte gibt die Größe des internen Puffers der Pipe in Bytes an. Die dritte Spalte enthält die Anzahl der aktuell in der Pipe ungelesenen Bytes. Die Spalten sind durch Tabulatoren ('\t', ASCII 09h) getrennt. Bei Angabe von --verbose wird zusätzlich ein beschreibender Header ausgegeben. Sind weder --file noch --fd angegeben, verwendet --get die Standardeingabe.

Sofern die Option --check nicht angegeben ist, wird pipesz nicht beendet, wenn bei der Bearbeitung einer Datei oder eines Dateideskriptors ein Fehler auftritt. Dadurch kann pipesz generisch verwendet werden, ohne dass die Ausführung von Pipelines unterbrochen werden muss, falls sich der Typ bestimmter Dateien später ändert. Um Störungen zu minimieren, verhindert die Option --quiet in diesen Fällen die Ausgabe von Warnungen.

Der Kernel begrenzt den Pipe-Pufferspeicher, den nicht privilegierte Prozesse nutzen können (siehe FEHLER weiter unten). Der Kernel lehnt außerdem die Verkleinerung eines Pipe-Pufferspeichers ab, wenn dies zu einem Verlust gepufferter Daten führen würde. Weitere Informationen finden Sie unter pipe(7).

pipesz unterstützt die Angabe mehrerer kurzer Optionen nacheinander, wie es bei getopt(3) üblich ist. Das erste Argument ohne Option wird als Befehl interpretiert. Falls der Befehl mit »-« beginnen könnte, verwenden Sie »--«, um es von den Argumenten für pipesz zu trennen. In Shell-Skripten empfiehlt sich die Verwendung von »--«, wenn Parameter erweitert werden sollen. pipesz selbst liest nicht aus der Standardeingabe und schreibt nicht in die Standardausgabe, es sei denn, --get, --help oder --version sind angegeben.

OPTIONEN

-g, --get

schreibt die Größe der Pipe-Puffer in die Standardausgabe und beendet das Programm. Falls weder --file noch --fd angegeben sind, wird versucht, aus der Standardeingabe zu lesen. die Angabe dieser Option zusammen mit --set verursacht einen Fehler.

-s, --set Größe

Set the size of the pipe buffers, in bytes. This option may be suffixed by K, M, G, KiB, MiB, or GiB to indicate multiples of 1024. Fractional values are supported in this case. Additional suffixes are supported but are unlikely to be useful. If this option is not specified, a default value is used, as described above. If this option is specified multiple times, a warning is emitted and only the last-specified size is used. As a special behavior, if neither --file nor --fd are specified, standard output is adjusted. It is an error to specify this option in combination with --get.

-f, --file Pfad

setzt die Puffergröße der Pipe oder FIFO auf Pfad, relativ zum aktuellen Arbeitsverzeichnis. Sie können für verschiedene Dateien diese Option mehrfach angeben, auch in Kombination mit --file. Im Allgemeinen wird diese Option mit FIFOs verwendet, ist aber auch mit anonymen Pipes verwendbar, wie jenen in /proc/PID/fd. Änderungen der Puffergröße von FIFOs sind nach einem Systemneustart nicht mehr wirksam.

-n, --fd number

Set the buffer size of the pipe or FIFO corresponding to file descriptor number. You may specify this option multiple times to affect different file descriptors, and you may do so in combination with --file. Shorthand options are provided for the common cases of fd 0 (stdin), fd 1 (stdout), and fd 2 (stderr). These should suffice in most cases.

-i, --stdin

Kürzel für --fd 0.

-o, --stdout

Kürzel für --fd 1.

-e, --stderr

Kürzel für --fd 2.

-c, --check

beendet das Programm, ohne den Befehl auszuführen, falls beim Manipulieren einer Datei oder eines Dateideskriptors ein Fehler auftrat. Falls diese Option nicht angegeben ist, wird standardmäßig eine Warnung in die Standardfehlerausgabe geschrieben und die Programmausführung fortgesetzt.

-q, --quiet

Do not report non-fatal errors to standard error. This option does not affect the normal output of --get, --verbose, --help, or --version.

-v, --verbose

veranlasst pipesz, eine beschreibende Überschrift über der Tabelle auszugeben, wenn dies mit --get angegeben wird. Wenn Sie es ansonsten angeben, schreibt pipesz die vom Kernel festgelegten tatsächlichen Puffergrößen in die Standardfehlerausgabe.

-h, --help

zeigt einen Hilfetext an und beendet das Programm.

-V, --version

zeigt Versionsinformationen an und beendet das Programm.

BEISPIELE

pipesz dd if=Datei bs=1M | ...

führt dd(1) mit einer erweiterten Standard-Ausgabepipe aus, was es ermöglicht, Kontextschalter beim Pipen um große Blöcke zu vermeiden.

pipesz -s1M -cf /run/mein-dienst.fifo

Setzt die Pipe-Puffergröße einer Dienst-FIFO auf 1.048.576 Byte. Falls die Puffergröße nicht gesetzt werden kann, wird pipesz mit einem Fehler beendet.

echo hello | pipesz -g

gibt die Größe der Pipe aus, die von der Shell verwendet wird, um Eingaben an pipesz zu übergeben. Da pipesz nicht aus der Standardeingabe liest, können auch 6 ungelesene Bytes in die Pipe gelangen, abhängig von relativen Timings.

find /proc/PID/fd -exec pipesz -gqf '{}' ';'

gibt die Größe und Anzahl ungelesener Bytes aller Pipes aus, die von PID verwendet werden. Falls einige Pipes routinemäßig voll sind, kann pipesz einen Flaschenhals bei der Verarbeitung mildern.

ANMERKUNGEN

Linux unterstützt die Größenanpassung von Pipe-Puffern seit Kernel 2.6.35. In dieser Version wurde außerdem /proc/sys/fs/pipe-max-size eingeführt.

Dieses Programm verwendet F_GETPIPE_SZ/F_SETPIPE_SZ aus fcntl(2), um die Pipe-Puffergrößen zu ermitteln und zu setzen.

Dieses Programm verwendet FIONREAD aus ioctl(2), um die Menge der ungelesenen Daten in Pipes zu ermitteln. Falls dies aus irgendeinem Grund fehlschlägt, wird die Menge der ungelesenen Daten als 0 gemeldet.

FEHLER

Vor Linux 4.9 beeinträchtigten einige Fehler das Erzwingen bestimmter Ressourcenbeschränkungen beim Setzen von Pipe-Puffergrößen. In pipe(7) finden Sie Details hierzu.

AUTOREN

Nathan Sharp <nwsharp@live.com>

SIEHE AUCH

pipe(7)

FEHLER MELDEN

Nutzen Sie zum Melden von Fehlern das Fehlererfassungssystem <https://github.com/util-linux/util-linux/issues>.

VERFÜGBARKEIT

Der Befehl pipesz ist Teil des Pakets util-linux, welches aus dem Linux-Kernel-Archiv <https://www.kernel.org/pub/linux/utils/util-linux/> heruntergeladen werden kann.

2026-02-28 util-linux 2.42-rc1