Я шукаю те, чого я підозрюю, що не існує: неблокуючий буфер з ім'ям pipe (fifo) для використання з командного рядка. Чи є таке?
Ось випадок використання: Припустимо, у мене є процес, який триватиме довгий час у фоновому режимі і вимагає багато результатів stdout
. Мені не дуже важливо вихід і не хочу зберігати його (можливо, мені не вистачає місця), але я хотів би періодично "запускатись" і слідкувати за тим, що він робить, а потім знову відмовитися. і залиште це робити свою роботу. Тож я хотів би перенаправити свій вихід на цю теоретичну буферизовану, не блокуючу названу трубу, а потім періодично натискати на неї.
Тому в основному я хочу почати так ( 10M
з розміром буфера):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... і періодично заходьте, щоб побачити, що відбувається ...
tail -f magicfifo
... без magicfifo
збереження всього виводу (значить, не звичайний файл) і не блокуючи процес вилучення, коли він заповнюється і не натискається (значить, не зовсім нормальна названа труба).
Я не думаю, що рішення, які передбачають це, tail
або prune
будуть робити це (добре, я можу придумати вирішення проблеми, що стосується tail
), тому tail
що все-таки потрібно буде десь зберігати всі дані (якщо я хочу зайти і відмовитися від перегляду), і prune
повинен переписати файл, мабуть (я визнаю, я не намагався / довів це), порушивши перенаправлення процесу, генеруючи весь вихід.
Я сподіваюся, що я можу написати якусь утиліту для цього, але * nix має дуже багато цікавих аспектів файлів і труб, і я просто не можу допомогти, але думаю, що це існує, і я просто не знаю про це.
Отже: Чи є таке, і якщо так, що це?