วิธีทำ `tail -f` ของไฟล์บันทึกที่หมุนแล้ว?


106

บนระบบที่ใช้เวลานานฉันมักจะมีเทอร์มินัล

$ tail -f /var/log/kern.log

หรืออะไรทำนองนี้ที่เปิดอยู่

แต่ในบางครั้งฉันต้องรีสตาร์ทคำสั่งดังกล่าวเพราะไม่มีข้อความใหม่ปรากฏขึ้นอีก

ฉันคิดว่าเป็นเพราะงานหมุนบันทึกที่แทนที่ไฟล์บันทึกtail -fคือ 'ดู'

ฉันจะหลีกเลี่ยงปัญหาการเริ่มต้นใหม่นี้ได้อย่างไร

ฉันสามารถเรียกtailเช่นนี้เพื่อสังเกตกระบวนการหมุนและทำสิ่งที่ถูกต้องได้หรือไม่?

(ฉันสังเกตเห็นปัญหานี้ในระบบ Ubuntu 11.04 ที่ใช้เป็นrsyslogdค่าเริ่มต้น)


2
ที่เกี่ยวข้อง: unix.stackexchange.com/questions/196168/…
Volker Siegel

คำตอบ:


162

ใช้-Fตัวเลือกแทน:

tail -F /var/log/kern.log

-Fตัวเลือกที่บอกtailในการติดตามการเปลี่ยนแปลงแฟ้มโดยชื่อแทนการใช้หมายเลขไอโหนดซึ่งการเปลี่ยนแปลงระหว่างการหมุน นอกจากนี้ยังจะพยายามเปิดไฟล์หากไม่มีอยู่


7
เจ๋งใช่ฉันเป็น (สำหรับการบันทึกนี่เป็นตัวเลือกหาง GNU - โดยที่ GNU tail เป็นค่าเริ่มต้นแน่นอนบน Ubuntu)
maxschlepzig

คุณพูดถูก: - / ฉันไม่ได้สังเกตว่าUbuntuในคำถามของคุณเป็นเพียงตัวอย่างเท่านั้น
andcoz

ไม่เป็นปัญหาเลย - ฉันเพิ่งแสดงความคิดเห็นเพื่อความสมบูรณ์ (บางครั้งฉันแค่ต้องการดูว่า POSIX คืออะไรและไม่ใช่อะไร) คำถามนั้นเกี่ยวกับอูบุนตูค่อนข้างมาก
maxschlepzig

1
คือtail -F /var/log/kern.logเทียบเท่ากับtail -f --follow=name --retry /var/log/kern.log?
Basj

1
@Basj - ตามman7.org/linux/man-pages/man1/tail.1.htmlมันเทียบเท่า
andrej
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.