ทางเลือกสำหรับ“ tail -f” ที่ตามด้วยชื่อไฟล์


59

ฉันมีบันทึกบางส่วนที่ถูกสร้างขึ้นโดยใช้ตัวบันทึกไฟล์หมุนเวียน นี้จะบันทึกลงในไฟล์ที่เรียกว่าtool.logและในเวลาเที่ยงคืนนี้เพื่อย้ายและเริ่มใหม่tool.log.<date>tool.log

ฉันมีtail -f tool.logที่ทำงานบนเครื่องที่จะเก็บตาบนบันทึก แต่ในเวลาเที่ยงคืนเมื่อtool.logมีการเปลี่ยนชื่อtool.log.<date>, tailยังคงดูแฟ้มที่เปลี่ยนชื่อ

สิ่งที่ฉันหวังคือเครื่องมือที่คล้ายกับtailแต่จะตรวจสอบไฟล์ที่ชื่อtool.logต่อไปแทนที่จะตามไอโหนด

สิ่งนี้มีอยู่จริงหรือไม่? ถ้าไม่ฉันสามารถเขียนเองใน Python เพื่อจุดประสงค์นี้

คำตอบ:


90

การใช้งานบางอย่างของtailมีตัวเลือกสำหรับสิ่งนี้; นี่คือคำอธิบายจาก man page สำหรับหาง GNU:

-F
เหมือนกับ --follow=name --retry

-f, --follow[ ={ ชื่อ | descriptor }]
เอาต์พุตต่อท้ายข้อมูลเมื่อไฟล์เติบโต -f,, --followและ--follow=descriptorเทียบเท่า

--retry
พยายามเปิดไฟล์ต่อไปแม้ว่าจะเป็นหรือไม่สามารถเข้าถึงได้ มีประโยชน์เมื่อทำตามชื่อคือด้วย--follow=name

เนื่องจากตัวเลือกนี้ไม่ได้ระบุโดย POSIX คุณจึงไม่สามารถพึ่งพาได้ทุกที่ การใช้งานบางอย่างที่รู้จัก:

  • GNU - มี-Fดังที่อธิบายไว้ข้างต้น
  • Mac OS X , FreeBSDและ NetBSD - มี-Fตัวเลือกที่คล้ายกันซึ่งมีเอฟเฟกต์เหมือนกัน
  • OpenBSD --fเพียงพอ (หากไฟล์ถูกแทนที่ (เช่นจำนวนไอโหนดเปลี่ยนแปลง) ส่วนท้ายจะเปิดไฟล์อีกครั้งและดำเนินการต่อ)
  • โซลาริส - ไม่เทียบเท่า
  • Busybox --Fมีให้บริการในรุ่นล่าสุด แต่ต้องรวบรวมด้วยENABLE_FEATURE_FANCY_TAIL(ไม่ใช่ค่าเริ่มต้นที่รวบรวมไว้)

55

ทางเลือกคือtail -Fคำสั่ง

-Fตัวเลือกหมายถึงการ--follow=nameมี--retryตัวเลือกเพื่อให้หางจะดูไฟล์ของคุณแม้ว่าจะได้รับการลบและสร้างขึ้นอีกครั้ง


5

เนื่องจากคุณได้ขอทางเลือกอื่น :

ยูทิลิตี้อาจจะเป็นทางเลือกสำหรับlesstail -F

มันจะต้องมีการทำงานดังต่อไปนี้less --follow-name filename.logและกด+ShiftF

สิ่งนี้จะให้ผลลัพธ์เหมือนกับtail -Fคุณ


ขอบคุณ ฉันเป็นเพียงทางเลือกเดียวเพราะฉันไม่รู้หาง -F ดีเสมอที่จะรู้ว่าตัวเลือก
ฮิวจ์

4

อีกทางเลือกหนึ่งคือการใช้watchคำสั่งซึ่งจะทำซ้ำคำสั่งทุก ๆ n วินาทีทุก 2 วินาทีในตัวอย่างนี้:

watch -n2 "tail tool.log"

ใช้Ctrl+ Cเพื่อออกจากคำสั่งเมื่อคุณดูบันทึกเสร็จแล้ว


1
ดูเหมือนว่ามันจะสร้างข้อความซ้ำซ้อนมากมายหากบันทึกเลื่อนช้ากว่าตัวจับเวลาการรีเฟรชและจะพลาดบางข้อความหากเลื่อนเร็วขึ้น
Bobson

3
นาฬิกาใช้งานได้ทั่วทั้งหน้าจอดังนั้นจึงไม่ซ้ำข้อความ แต่จะลบความสามารถในการเลื่อนกลับ
Hugh

3

lnavเป็นอีกเครื่องมือที่ยอดเยี่ยมที่ตามชื่อไฟล์

นอกจากนี้คุณยังสามารถชี้ไปที่ไดเรกตอรีและมันจะตัดไฟล์ทั้งหมดในไดเรกทอรีนั้นนอกเหนือไปจากคุณสมบัติอื่น ๆ ที่เรียบร้อย


ฉันพบว่าไม่ได้จัดการกับการตัดทอนและ / หรือเปลี่ยนชื่อบันทึกการหมุน (ฉันไม่แน่ใจว่าสิ่งใดที่ทำให้เสียในกรณีของฉัน) ดังนั้นบันทึกจะหยุดในเวลาเที่ยงคืนเว้นแต่ฉันจะรีสตาร์ท lnav ฉันขาดสวิทช์หรือเทคนิคที่เห็นได้ชัดไปหรือเปล่าเพราะฉันสงสัยว่านี่จะเป็นสิ่งที่ควรทำในการก้าวเท้า?
Stuart Hickinbottom

ขึ้นอยู่กับว่าไฟล์ถูกตัดทอนอย่างไร หากคุณส่ง-rแฟล็กไปที่ lnav มันจะโหลดชื่อไฟล์อีกครั้ง (และโหลดบันทึกที่หมุนไปก่อนหน้านี้)
Wayne Werner

1

ฉันไม่แน่ใจว่าmultitailจะจัดการกรณีเฉพาะของคุณ แต่ฉันพนันได้ Multitail ทำทุกอย่างที่คุณอยากtailทำ

https://en.wikipedia.org/wiki/MultiTail


1
ใช่มันจะ multitail -f <name1> -f <name2> -f <name3> ...- ตัวอย่างนี้แสดงไฟล์ต่าง ๆ ต่อไปนี้พร้อมกันซึ่งจะแสดงในหน้าต่างแยกต่างหาก
Stuart Hickinbottom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.