ปัญหาสองข้อที่คุณโพสต์:
ดูการสำรวจเท่านั้นเมื่อเทียบกับการส่งออกเมื่อมีการปรับปรุง
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
ควรทำมัน