PIPESZ(1)

NAMN
pipesz - ställa in eller undersöka storleken på pipe- och FIFO-buffertar

SYNOPSIS

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

pipesz [options] --get

BESKRIVNING

Pipes och FIFO:er har en intern buffert som används för att överföra data mellan läsänden och skrivänden. I vissa fall kan standardstorleken på denna interna buffert vara olämplig. Detta program ger möjlighet att ställa in och undersöka storleken på dessa buffertar.

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.

Operationen --set tillåter ett valfritt kommando att utföras efter att rörbuffertstorlekarna har ställts in. Detta kommando körs med de justerade rören.

Operationen --get matar ut data i tabellformat. Den första kolumnen är namnet på den pipe som skickades till pipesz. Filbeskrivare namnges som "fd N". Den andra kolumnen är storleken, i byte, på pipens interna buffert. Den tredje kolumnen är antalet olästa byte som för närvarande finns i pipen. Kolumnerna är åtskilda av tabbar ('\t', ASCII 09h). Om --verbose anges, skickas även en beskrivande rubrik ut. Om varken --file eller --fd anges, använder --get standardinmatningen.

Om inte flaggan --check har angetts avslutas pipesz inte om den stöter på ett fel när den hanterar en fil eller filbeskrivare. Detta gör att pipesz kan användas generiskt utan rädsla för att störa körningen av pipelines om typen av vissa filer senare skulle ändras. För minimal störning förhindrar flaggan --quiet att varningar skickas ut i dessa fall.

Kärnan sätter gränser för hur mycket pipebuffertutrymme processer som inte är privilegierade kan använda, se dock KÄNDA PROBLEM nedan. Kärnan kommer också att vägra att krympa en pipe-buffert om detta skulle orsaka förlust av buffrade data. Se pipe(7) för ytterligare information.

pipesz stöder specificering av flera korta flaggor i följd, på det vanliga getopt(3)-sättet. Det första argumentet som inte är en flagga tolkas som kommando. Om kommando kan börja med '-', använd '--' för att separera det från argumenten till pipesz. I skalskript är det god praxis att använda '--' när parameterexpansion är inblandad. pipesz själv läser inte från standardinmatningen och skriver inte till standardutmatningen om inte --get, --help eller --version anges.

FLAGGOR

-g, --get
    Rapportera storleken på rörbuffertarna till standardutdata och avsluta. Som ett speciellt beteende undersöks standardinmatningen om varken --file eller --fd anges. Det är ett fel att ange denna flagga i kombination med --set.

-s, --set storlek
    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 sökväg
    Ställ in buffertstorleken för FIFO eller pipe vid sökväg, i förhållande till den aktuella arbetskatalogen. Du kan ange den här flaggan flera gånger för att påverka olika filer, och du kan göra det i kombination med --fd. I allmänhet används den här flaggan med FIFO:er, men det fungerar också på anonyma pipes som de som finns i /proc/PID/fd. Ändringar av buffertstorleken för FIFO:er bevaras inte vid omstarter av systemet.

-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
    Förkortning för --fd 0.

-o, --stdout
    Förkortning för --fd 1.

-e, --stderr
    Förkortning för --fd 2.

-c, --check
    Avsluta, utan att utföra kommando, om något fel uppstår när en fil eller filbeskrivare manipuleras. Om detta inte anges är standardbeteendet att skicka en varning till standardfelet och fortsätta.

-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
    Om det anges med --get kommer pipesz att skriva ut en beskrivande rubrik ovanför tabellen. I annat fall, om det anges, kommer pipesz att skriva ut de faktiska buffertstorlekarna som ställts in av kärnan till standardfelet.

-h, --help
    Visa hjälptext och avsluta.

-V, --version
    Visa version och avsluta.

EXEMPEL

pipesz dd if=fil bs=1M | ...
    Kör dd(1) med en utökad standardutmatningsrörledning, vilket gör att den kan undvika kontextbyten när den skickar runt stora block.

pipesz -s1M -cf /run/my-service.fifo
    Ställer in rörbuffertstorleken för en service-FIFO till 1 048 576 byte. Om buffertstorleken inte kunde ställas in avslutas pipesz med ett felmeddelande.

echo hallå | pipesz -g
    Skriver ut storleken på det rör som används av skalet för att skicka indata till pipesz. Eftersom pipesz inte läser standardinmatning kan den också rapportera 6 olästa byte i pipen, beroende på relativa tidpunkter.

find /proc/PID/fd -exec pipesz -gqf '{}' ';'
    Skriver ut storlek och antal olästa byte för alla pipes som används av PID. Om vissa rör rutinmässigt är fulla kan pipesz kanske minska en flaskhals i bearbetningen.

ANTECKNINGAR

Linux har stöd för att justera storleken på pipe-buffertar sedan kernel 2.6.35. Denna version introducerade även /proc/sys/fs/pipe-max-size.

Detta program använder fcntl(2) F_GETPIPE_SZ/F_SETPIPE_SZ för att hämta och ställa in rörbuffertstorlekar.

Det här programmet använder ioctl(2) FIONREAD för att rapportera mängden olästa data i pipes. Om detta av någon anledning misslyckas rapporteras mängden olästa data som 0.

KÄNDA PROBLEM

Före Linux 4.9 fanns det några fel som påverkade hur vissa resursgränser tillämpades när storleken på pipebuffertar ställdes in. Se pipe(7) för mer information.

UPPHOVSPERSONER

SE ÄVEN

pipe(7)

FELRAPPORTERING

För felrapporter, använd

TILLGÄNGLIGHET

Kommandot pipesz ingår i paketet util-linux som kan hämtas från