Saya mencari sesuatu yang saya curigai tidak ada: Pipa bernama buffered (fifo) non-blocking untuk digunakan dari baris perintah. Apakah ada hal seperti itu?
Inilah kasus penggunaannya: Misalkan saya memiliki proses yang akan berjalan lama di latar belakang dan memuntahkan banyak output stdout
. Saya tidak terlalu peduli dengan output dan tidak ingin menyimpannya (mungkin saya tidak punya cukup ruang), tetapi saya ingin "mampir" secara berkala dan mengikuti apa yang dilakukannya, lalu keluar lagi dan biarkan untuk melakukan tugasnya. Jadi saya ingin mengarahkan outputnya ke pipa bernama buffered, non-blocking dan kemudian secara berkala menyadapnya.
Jadi pada dasarnya saya ingin memulai seperti ini ( 10M
menjadi ukuran buffer):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... dan secara berkala mampir untuk melihat apa yang terjadi ...
tail -f magicfifo
... tanpa magicfifo
menyimpan semua output (jadi, bukan file normal), dan tanpa itu memblokir proses memuntahkan ketika mengisi dan tidak mengetuk (jadi, tidak cukup pipa bernama normal).
Saya tidak berpikir solusi yang melibatkan tail
atau prune
akan melakukannya (well, saya bisa memikirkan solusi yang melibatkan tail
), karena tail
masih akan mengharuskan saya menyimpan semua data di suatu tempat (jika saya ingin mampir dan keluar dari melihat itu), dan prune
harus menulis ulang file, mungkin (saya akui saya belum mencoba / membuktikan ini) melanggar pengalihan proses menghasilkan semua output.
Saya berharap saya dapat menulis beberapa utilitas untuk melakukan ini, tetapi * nix memiliki begitu banyak aspek keren dari file dan pipa dan semacamnya, saya hanya bisa berpikir ini ada dan saya tidak tahu tentang itu.
Jadi: Apakah ada hal seperti itu, dan jika demikian apa itu?