Tôi đang tìm kiếm thứ gì đó mà tôi nghi ngờ không tồn tại: Một ống có tên đệm (fifo) không bị chặn để sử dụng từ dòng lệnh. Có một điều như vậy?
Đây là trường hợp sử dụng: Giả sử tôi có một quy trình sẽ chạy một thời gian dài trong nền và tạo ra rất nhiều đầu ra cho stdout
. Tôi không thực sự quan tâm đến đầu ra và không muốn lưu trữ nó (có lẽ tôi không có đủ chỗ để làm), nhưng tôi muốn "thả" theo định kỳ và làm theo những gì nó đang làm, sau đó lại bỏ đi và để nó làm công việc của nó. Vì vậy, tôi muốn chuyển hướng đầu ra của nó sang đường ống có tên đệm, không chặn theo lý thuyết này và sau đó định kỳ chạm vào nó.
Vì vậy, về cơ bản tôi muốn bắt đầu như thế này ( 10M
là kích thước của bộ đệm):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... và định kỳ ghé vào để xem chuyện gì đang xảy ra ...
tail -f magicfifo
... mà không magicfifo
lưu trữ tất cả đầu ra (vì vậy, không phải là một tệp bình thường) và không có nó chặn quá trình phun ra khi nó đầy và không được gõ (vì vậy, không hoàn toàn là một ống có tên bình thường).
Tôi không nghĩ các giải pháp liên quan tail
hoặc prune
sẽ làm điều đó (tốt, tôi có thể nghĩ đến một cách giải quyết liên quan tail
), bởi vì tail
vẫn sẽ yêu cầu tôi lưu trữ tất cả dữ liệu ở đâu đó (nếu tôi muốn thả vào và bỏ qua khi xem nó), và prune
phải viết lại tệp, có lẽ (tôi thừa nhận tôi đã không thử / chứng minh điều này) phá vỡ sự chuyển hướng của quá trình tạo ra tất cả đầu ra.
Tôi hy vọng tôi có thể viết một số tiện ích để làm điều này, nhưng * nix có rất nhiều khía cạnh thú vị của các tập tin và đường ống và như vậy, tôi không thể không nghĩ rằng nó tồn tại và tôi chỉ không biết về nó.
Vì vậy: Có một điều như vậy, và nếu vậy nó là gì?