PIPESZ(1)

NAZWA
pipesz - ustawia lub sprawdza rozmiary buforów potoku i FIFO

SKŁADNIA

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

pipesz [options] --get

OPIS

Potoki i FIFO utrzymują wewnętrzny bufor używany do transferu danych pomiędzy końcem do odczytu i końcem do zapisu. W niektórych przypadkach domyślny rozmiar wewnętrznego bufora może nie być właściwy. Niniejszy program dostarcza metody do ustawiania i sprawdzania rozmiaru opisywanych buforów.

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.

Operacja --set pozwala na ustawienie opcjonalnego polecenia do wykonania po ustawieniu rozmiarów buforów potoku. Polecenie to jest wykonywane już na zmodyfikowanych potokach.

Operacja --get wypisuje dane w formacie tabelarycznym. Pierwsza kolumna jest nazwą potoku przekazaną do pipesz. Deskryptory plików są nazywane jako "fd N". Druga kolumna jest rozmiarem wewnętrznego bufora potoku w bajtach. Trzecia kolumna jest liczbą nieodczytanych obecnie bajtów w potoku. Kolumny są rozdzielone znakiem tabulacji("\t", ASCII 09h). Jeśli poda się --verbose, wypisany zostanie również nagłówek z opisem. Jeśli nie poda się --file ani --fd, --get działa na standardowym wejściu.

O ile nie poda się opcji --check, pipesz nie wychodzi po napotkaniu błędu przy modyfikacji pliku lub deskryptora pliku. Dzięki temu można korzystać z pipesz liberalnie i bez obawy o zaburzanie działania potoków, gdyby typy określonych plików uległy później zmianie. Opcja --quiet dodatkowo wyłącza wyświetlanie ostrzeżeń w takim przypadku.

Jądro narzuca limity wielkości przestrzeni na bufory potoków, jaką mogą stosować procesy nieuprzywilejowane, zob. jednak USTERKI poniżej. Jądro odmówi również zmniejszenia bufora potoku, gdyby spowodowało to utratę zbuforowanych danych. Więcej szczegółów w podręczniku pipe(7).

pipesz obsługuje łączenie wielu krótkich opcji, w zwykłym stylu getopt(3). Pierwszy argument niebędący opcją jest interpretowany jako polecenie. Jeśli nazwa polecenia może rozpoczynać się znakiem "-", proszę oddzielić ją znakami "--" od argumentów pipesz. W skryptach powłoki, dobrą praktyką jest korzystanie z '--' przy interpretacji parametrów. Sam pipesz nie odczytuje ze standardowego wejścia i nie zapisuje na standardowe wyjście, chyba że podano opcje --get, --help lub --version.

OPCJE

-g, --get
    Zgłasza rozmiar buforów potoku na standardowym wyjściu i wychodzi. Jako przypadek specjalny, jeśli nie poda się --file ani --fd, sprawdzane jest standardowe wejście. Łączenie tej opcji z --set jest błędem.

-s, --set rozmiar
    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 ścieżka
    Ustawia rozmiar bufora FIFO lub potoku ze ścieżki, względnej wobec bieżącego katalogu roboczego. Można podać opcję wielokrotnie, aby wpłynąć na różne pliki, można to również uczynić w połączeniu z --fd. Opcja ta jest zwykle używana wobec FIFO, lecz działa również na potokach anonimowych (nienazwanych), takich jak w /proc/PID/fd. Zmiany rozmiaru bufora FIFO nie są zachowywane po przeładowaniu systemu.

-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
    Skrót --fd 0.

-o, --stdout
    Skrót --fd 1.

-e, --stderr
    Skrót --fd 2.

-c, --check
    Wychodzi, bez wykonywania polecenia, gdyby przy operowaniu na pliku lub deskryptorze plików wystąpił jakiś błąd. Domyślnym zachowaniem w takim przypadku jest wypisanie ostrzeżenia na standardowe wyjście błędów i kontynuowanie.

-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
    Przy łącznym użyciu z --get, pipesz wypisze nagłówek z opisem nad tabelą. Jeśli się ją poda w innym przypadku, pipesz wypisze faktyczne rozmiary buforów ustawione przez jądro na standardowe wyjście błędów.

-h, --help
    Wyświetla ten tekst i wychodzi.

-V, --version
    Wyświetla wersję i wychodzi.

PRZYKŁADY

pipesz dd if=plik bs=1M | ...
    Uruchamia dd(1) z powiększonym standardowym potokiem wyjściowym, co umożliwia uniknięcie przełączania kontekstów przy przekazywaniem potokiem dużych bloków danych.

pipesz -s1M -cf /run/moja-usługa.fifo
    Ustawia rozmiar bufora potoku FIFO usługi na 1 048 576 bajtów. Jeśli rozmiar bufora nie może być ustawiony, pipesz wyjdzie z błędem.

echo witaj | pipesz -g
    Wypisze rozmiar potoku używany przez powłokę w celu przekazania wejścia do pipesz. Ponieważ pipesz nie odczytuje standardowego wejścia, program może również zgłosić 6 nieodczytanych bajtów w potoku, w zależności od względnej chronologii zdarzeń.

find /proc/PID/fd -exec pipesz -gqf '{}' ';'
    Wypisuje rozmiar i liczbę nieodczytanych bajtów ze wszystkich potoków używanych przez proces o identyfikatorze PID. Jeśli niektóre potoki są często pełne, pipesz może pomóc uniknąć efektu wąskiego gardła.

UWAGI

Linux obsługuje dostosowywanie rozmiarów buforów potoków od jądra 2.6.35. W tym wydaniu wprowadzono również /proc/sys/fs/pipe-max-size.

Niniejszy program do ustawiania rozmiarów buforów potoków korzysta z F_GETPIPE_SZ/F_SETPIPE_SZ fcntl(2).

Program korzysta z FIONREAD ioctl(2) do zgłaszania ilości nieodczytanych danych w potokach. Jeśli z jakiegoś powodu się to nie powiedzie, rozmiar nieodczytanych danych jest zgłaszany jako 0.

USTERKI

Przed Linuksem 4.9, pewne błędy wpływały na stosowanie pewnych ograniczeń zasobów przy ustawianiu rozmiarów buforów potoków. Więcej szczegółów w podręczniku pipe(7).

AUTORZY

ZOBACZ TAKŻE

pipe(7)

ZGŁASZANIE BŁĘDÓW

Problemy należy zgłaszać w

DOSTĘPNOŚĆ

Polecenie pipesz jest częścią pakietu util-linux, który można pobrać ze strony