สตรีมไฟล์ใด ๆ ใน linux


5

ฉันมีเอาต์พุตเทอร์มินัลซึ่งฉันต้องการให้ผู้ใช้หลายคนใช้งานได้

ขณะนี้บางสิ่งที่ชอบ:

command > /var/logs

สำหรับอินพุตและ:

watch tail -30 /var/logs

สำหรับขั้วอินพุต

อย่างไรก็ตามสิ่งนี้เป็นสิ่งที่ไม่พึงประสงค์เนื่องจากดูการสำรวจความคิดเห็นเมื่อเทียบกับการส่งออกเมื่อมีการอัปเดตและส่วนท้ายไม่อนุญาตให้เลื่อนกลับ

คำตอบ:


8

ปัญหาสองข้อที่คุณโพสต์:

ดูการสำรวจเท่านั้นเมื่อเทียบกับการส่งออกเมื่อมีการปรับปรุง

tail -fไม่ได้สำรวจ ในเวอร์ชั่น 7.5 ของ GNU Coreutils tail -fจะใช้inotifyอินเตอร์เฟสของเคอร์เนล Linux เพื่อรับสัญญาณจากเคอร์เนลที่ระบุว่าไฟล์ได้รับการแก้ไข หากคุณไม่ได้ใช้ GNU Coreutils หรือใช้รุ่นที่เก่ากว่า 7.5 ด้วยเหตุผลบางอย่างมันจะโพลหนึ่งครั้งต่อวินาที มันอาจจะยังโพลล์ในระบบที่ไม่ลินุกซ์ POSIX ปฏิบัติการ (BSD, Solaris, ฯลฯ ) แต่คุณจะต้องมีการวิจัยบนพื้นฐานกรณีโดยกรณี: บางส่วนของระบบปฏิบัติการเหล่านี้ใช้ GNU coreutils แต่เคอร์เนลไม่สนับสนุนinotify; บางคนไม่ใช้ GNU Coreutils เพื่อดำเนินการtailเลย

หางไม่อนุญาตให้เลื่อนกลับ

lessคำสั่งได้รับการออกแบบมาโดยเฉพาะเพื่อบัฟเฟอร์ข้อมูลจากstdin(เช่นจากtailคำสั่ง) และช่วยให้คุณสามารถเลื่อนไปมา บัฟเฟอร์ไม่ จำกัด แต่คุณสามารถใช้ตัวเลือกบรรทัดคำสั่งเพื่อเพิ่มหรือลดบัฟเฟอร์เช่นเดียวกับการปรับเปลี่ยนระยะเวลาที่บัฟเฟอร์สำหรับ back-scroll และ forward-scroll

ดังนั้นอาจจะชอบ

tail -f /var/logs | less

จะช่วยให้คุณเก็บบัฟเฟอร์การเลื่อนของบันทึกโดยไม่ต้องทำการสำรวจ ( tailเพียงแค่ไม่มีการใช้งาน CPU ที่ไม่มีการใช้งานจนกว่าเคอร์เนลจะโยนสัญญาณเพื่อแจ้งให้ทราบว่ามีการแก้ไขไฟล์)

หากคุณต้องการให้ผู้ใช้หลายคนสามารถอ่านจากบัฟเฟอร์เดียวกันคุณสามารถเรียกใช้tail -f /var/logsภายในscreenเซสชัน คำตอบเดิมของฉันไม่ได้คำนึงถึงว่าคุณต้องการเรียกใช้เพื่อให้ผู้ใช้หลายคนสามารถเห็นข้อมูลบันทึกเดียวกันในเวลาเดียวกัน @Let_Me_Be พูดถึงscreenแล้วมันเกิดขึ้นกับฉันว่านั่นอาจเป็นทางออกที่ดีที่สุดของคุณ

ดังนั้นให้วางโซลูชันของฉันและโซลูชันของ @ Let_Me_Be ไว้ด้วยกัน:

screen -mdS logview -- tail -f /var/logs

คำเตือน: ยังไม่ทดลอง โปรดแก้ไขหากมันผิด แต่ฉันคิดว่าเราใกล้จะถึงทางออกที่เหมาะสมแล้ว

ตอนนี้คุณเพียงแค่ต้องมีscreenโหมดผู้ใช้หลายคน มันซับซ้อนเล็กน้อยดังนั้นฉันจะให้เว็บไซต์นี้พูดเอง ส่วนสำคัญคือคุณต้องเพิ่มไฟล์multiuser onของคุณ ~/.screenrcดูปัญหาทั่วไปที่ด้านล่างของลิงค์นั้น

ตอนนี้สำหรับผู้ใช้เพื่อดูบันทึก:

screen -rS logview

ควรทำมัน


1
นอกจากนี้ให้ดูที่คำถามนี้ดูเหมือนจะมีตัวเลือกน้อยกว่าในการรอและแสดงข้อมูลใหม่ (เช่น tail -f)
terdon

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.