Szukam czegoś, co, jak podejrzewam, nie istnieje: nieblokowana buforowana nazwana potok (fifo) do użytku z wiersza poleceń. Czy jest coś takiego?
Oto przypadek użycia: Załóżmy, że mam proces, który będzie działał przez długi czas w tle i wyrzuci wiele wyników stdout
. Tak naprawdę nie dbam o wynik i nie chcę go przechowywać (być może nie mam wystarczająco dużo miejsca), ale chciałbym okresowo „wpaść” i śledzić, co robi, a następnie zrezygnować ponownie i zostaw to do wykonania. Chciałbym więc przekierować swoje wyjście do tej teoretycznie buforowanej, nieblokującej nazwanej potoki, a następnie okresowo się z nią korzystać.
Zasadniczo chcę zacząć w ten sposób ( 10M
ponieważ jest to rozmiar bufora):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... i okresowo przychodzę, aby zobaczyć, co się dzieje ...
tail -f magicfifo
... bez magicfifo
zapisywania wszystkich danych wyjściowych (więc nie jest to zwykły plik) i bez blokowania procesu wyrzucania, gdy się zapełnia i nie jest podsłuchiwany (więc nie całkiem normalna nazwana rura).
Nie sądzę, aby rozwiązania obejmowały tail
lub zrobiłyby prune
to (cóż, mogę wymyślić obejście obejmujące tail
), ponieważ tail
nadal wymagałoby to przechowywania gdzieś wszystkich danych (jeśli chcę wpaść i zrezygnować z patrzenia na nie), i prune
musi przepisać plik, prawdopodobnie (przyznam, że tego nie próbowałem / nie udowodniłem), przerywając przekierowanie procesu generującego wszystkie dane wyjściowe.
Spodziewam się, że mógłbym napisać jakieś narzędzie do tego, ale * nix ma tak wiele fajnych aspektów plików i potoków, i tak, po prostu nie mogę przestać myśleć, że to istnieje i po prostu o tym nie wiem.
Więc: czy istnieje coś takiego, a jeśli tak, to co to jest?