ฉันกำลังมองหาสิ่งที่ฉันสงสัยว่าไม่มีอยู่: ไปป์บัฟเฟอร์ที่ไม่มีชื่อ (Fifo) ที่ไม่มีการบล็อกเพื่อใช้งานจากบรรทัดคำสั่ง มีอะไรแบบนี้เหรอ?
นี่คือกรณีการใช้งาน: stdout
สมมติว่าฉันมีกระบวนการที่จะไปทำงานเป็นเวลานานในพื้นหลังและคายจำนวนมากของการส่งออกไปยัง ฉันไม่สนใจจริง ๆ เกี่ยวกับผลลัพธ์และไม่ต้องการเก็บไว้ (บางทีฉันไม่มีพื้นที่เพียงพอที่จะ) แต่ฉันต้องการ "ปล่อย" เป็นระยะ ๆ และทำตามสิ่งที่มันทำแล้วเลื่อนออกอีกครั้ง และปล่อยให้มันทำงาน ดังนั้นฉันต้องการที่จะเปลี่ยนเส้นทางการส่งออกไปยังบัฟเฟอร์ที่มีชื่อตามทฤษฎีซึ่งไม่มีการปิดกั้นจากนั้นแตะเป็นระยะ ๆ
โดยพื้นฐานแล้วฉันต้องการเริ่มต้นเช่นนี้ ( 10M
เป็นขนาดของบัฟเฟอร์):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
... และแวะเข้าไปเป็นระยะเพื่อดูว่าเกิดอะไรขึ้น ...
tail -f magicfifo
... โดยไม่ต้อง magicfifo
เก็บเอาท์พุททั้งหมด (ดังนั้นไม่ใช่ไฟล์ปกติ) และไม่มีการปิดกั้นกระบวนการที่ทำให้เกิดการระเบิดเมื่อมันเต็มและไม่ได้ถูกทาบทาม (ดังนั้นไม่ใช่ไปป์ปกติที่มีชื่อ)
ฉันไม่คิดว่าวิธีแก้ปัญหาที่เกี่ยวข้องtail
หรือprune
จะทำ (ดีฉันสามารถคิดถึงวิธีแก้ปัญหาที่เกี่ยวข้องtail
) เพราะtail
จะยังคงต้องการให้ฉันเก็บข้อมูลทั้งหมดที่ไหนสักแห่ง (ถ้าฉันต้องการที่จะลดลงและออกจากการดู) และprune
จะต้องเขียนไฟล์ใหม่อีกครั้งสันนิษฐาน (ฉันจะยอมรับว่าฉันไม่ได้ลอง / พิสูจน์ได้) ทำลายการเปลี่ยนเส้นทางของกระบวนการที่สร้างผลลัพธ์ทั้งหมด
ฉันคาดหวังว่าฉันสามารถเขียนยูทิลิตี้เพื่อทำสิ่งนี้ได้ แต่ * ระวังมีแง่มุมที่ยอดเยี่ยมมากมายของไฟล์และไพพ์และเช่นนั้นฉันอดไม่ได้ที่จะคิดว่ามันมีอยู่และฉันไม่รู้เกี่ยวกับมัน
ดังนั้น: มีสิ่งนั้นหรือไม่และถ้าเป็นเช่นนั้น