tail: อ่านไฟล์ทั้งหมดแล้วทำตาม


35

ฉันต้องการtail -fพฤติกรรมประเภทหนึ่งที่อ่านไฟล์ทั้งหมดแล้วยังคงติดตามมันต่อไปตามที่เขียนไว้


วิธีการแก้

จากคำตอบที่ฉันยอมรับงานนี้: tail -f -n +1 {filename}

ทำไมการทำงาน:-fตัวเลือกยังคง "ติดตาม" แฟ้มและผลผลิตสายใหม่ที่พวกเขาจะเขียนไปยังแฟ้ม -n +1แนะtailที่จะเริ่มต้นการอ่านไฟล์จากบรรทัดแรก การใช้-n -10จะเริ่มต้นด้วยสิบบรรทัดสุดท้ายของไฟล์


2
นี่คือความคิดเห็นไม่ใช่คำถาม และหางไม่ได้ทำเช่นนั้น: tail -f -n 10000000000000000000อาจจะแสดงทุกบรรทัดใช่ไหม? (อาจจะเป็น 100000000000000000000000 ค่อนข้างมาก: =))
Rinzwind

ฉันเชื่อว่าmore fileNameจะทำเช่นนั้น
ryekayo

1
ไม่ .. นอกจากนี้จะไม่เพิ่มบรรทัดพิเศษที่เพิ่มลงในไฟล์หลังจากที่เริ่มขึ้นแล้ว
Rinzwind

สันนิษฐานว่าtail -f -n 100...จะเกี่ยวข้องกับการอ่านไฟล์ล่วงหน้าเพื่อกำหนดจำนวนบรรทัดยกเว้นว่ามันฉลาดพอที่จะกำหนดขอบเขตบนสำหรับการนับบรรทัดตามขนาดไฟล์
mwfearnley

คำตอบ:


51

ใช้

tail -f -n +1

การใช้man tailจะให้รายละเอียดเพิ่มเติมข้อความที่ตัดตอนมาที่เกี่ยวข้องมีดังนี้

<snip>Numbers having a leading plus (`+') sign are relative to the
beginning of the input, for example, ``-n +2'' starts the display at the
second line of the input.</snip>

-f      The -f option causes tail to not stop when end of file is
        reached, but rather to wait for additional data to be appended to
        the input.  The -f option is ignored if the standard input is a
        pipe, but not if it is a FIFO.

-n number
        The location is number lines.

3
คุณช่วยเพิ่มรายละเอียดเพิ่มเติมในคำตอบของคุณได้ไหม? โปรดอธิบายสาเหตุและวิธีการแก้ปัญหาของคุณ (พบคำตอบของคุณในคิวโพสต์คุณภาพต่ำ)
kraxor

1
@ kraxor คุณสามารถค้นหา "รายละเอียดเพิ่มเติม" โดยดำเนินการman tail(และอ่าน) เช่นคำตอบว่าหรือทำการค้นหาออนไลน์สำหรับ "tail manpage" และอ่านหนึ่งในนั้น tailทำงานโดยเริ่มจากตำแหน่งในไฟล์อ่าน (และแสดง) จนสุดจากนั้นตรวจสอบขนาดไฟล์ที่เพิ่มขึ้น เมื่อขนาดไฟล์เพิ่มขึ้นtailอ่านและแสดงจากตำแหน่ง EOF เดิมไปจนถึงจุดสิ้นสุดใหม่ของไฟล์
waltinator

2
@ altinator ฉันไม่ได้ถามตัวเองจริงๆ ฉันขอให้เขาเพิ่มรายละเอียดเพิ่มเติมเนื่องจากโพสต์ของเขามีคุณภาพต่ำ แต่ฉันไม่ต้องการลงคะแนนให้ลบเพราะเขาให้คำตอบที่ถูกต้อง
kraxor

1
นี่คือสิ่งที่ฉันกำลังมองหา tail -50 {filename}ก่อนหน้านี้ฉันเคยใช้แต่ไม่ประสบความสำเร็จในการรวมสองรายการเข้าด้วยกัน
ซันนี่


3

ลองสิ่งนี้:

watch tail {filename}

ที่{filename}เป็นแฟ้มที่คุณต้องการที่จะเก็บตาบน สิ่งนี้จะมอนิเตอร์คำสั่งสำหรับการเปลี่ยนแปลงอย่างต่อเนื่องและเอาต์พุตการเปลี่ยนแปลงไปยัง stdout มันค่อนข้างมีประโยชน์


ดูเหมือนว่าเป็นเครื่องมือที่ดีมาก แม้ว่ามันจะไม่ได้ให้ผลลัพธ์ที่ฉันต้องการ แต่ก็จะจำไว้อย่างแน่นอน การรวมเข้ากับคำตอบที่ยอมรับนั้นค่อนข้างดี:watch tail -n +1 {filename}
Sonny

ใช่ดูเหมือนว่าคุณจะทำให้มันสมบูรณ์แบบ!
Rick Chatham

watchเป็นเครื่องมือที่มีประโยชน์จริง ๆ แต่สำหรับการดูการเปลี่ยนแปลงผลลัพธ์ของคำสั่ง แต่การเฝ้าดูจุดสิ้นสุดของไฟล์ที่ถูกผนวกเข้าด้วยจะดีกว่าการใช้tail -fมาก --- watch tail {filename}จะเปิดใหม่และอ่านจุดสิ้นสุดของไฟล์ทุก ๆ สองวินาที ในทางกลับกันtail -fดูการเติบโตของไฟล์และเมื่อตรวจพบมันจะอ่านเฉพาะส่วนที่ต่อท้าย tailf -fมีประสิทธิภาพมากขึ้นและปฏิกิริยาเร็วขึ้นมาก นอกจากนี้มันจะแสดงเนื้อหาไฟล์อย่างต่อเนื่องจากจุดที่คุณเริ่ม --- watchเขียนทับผลลัพธ์ของมันทุกสองวินาที
pabouk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.