Я ищу то, что, как я подозреваю, не существует: неблокируемый буферизованный именованный канал (fifo) для использования из командной строки. Что-то подобное существует?
Вот пример использования: Предположим, у меня есть процесс, который будет долго работать в фоновом режиме и израсходовать много выходных данных stdout
. Меня не очень волнует вывод, и я не хочу его хранить (возможно, мне не хватает места), но я хотел бы периодически «заходить» и следить за тем, что он делает, а затем снова выбрасывать и оставь это делать свою работу. Поэтому я бы хотел перенаправить вывод в этот теоретически буферизованный неблокирующий именованный канал, а затем периодически подключаться к нему.
В общем, я хочу начать так ( 10M
размер буфера):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... и периодически заглядывать, чтобы посмотреть, что происходит ...
tail -f magicfifo
... без magicfifo
сохранения всего вывода (то есть, не обычного файла) и без него, блокирующего процесс выброса, когда он заполняется и не изменяется (так что не совсем обычный именованный канал).
Я не думаю, что решения, включающие tail
или prune
будут делать это (ну, я могу придумать обходной путь tail
), потому tail
что все равно потребовали бы, чтобы я где-то хранил все данные (если я захочу заглянуть и бросить смотреть на это), и prune
должен переписать файл, предположительно (я признаю, что я не пробовал / не доказал это), нарушая перенаправление процесса, генерирующего весь вывод.
Я ожидаю, что мог бы написать какую-нибудь утилиту для этого, но * nix имеет так много классных аспектов файлов и каналов и тому подобное, я просто не могу не думать, что это существует, и я просто не знаю об этом.
Итак: есть ли такая вещь, и если да, то что это?