เปิดไฟล์ข้อความและปล่อยให้มันอัปเดตตัวเอง


20

ฉันจะเปิดไฟล์ข้อความและอนุญาตให้อัปเดตตัวเองได้อย่างไร คล้ายกับวิธีการtopทำงาน

ฉันต้องการเปิดไฟล์บันทึกและดูมันอัปเดตตัวเองได้ทันที

ฉันเพิ่งลอง:

$ tail error.log

แต่เพิ่งรู้ว่ามันแสดงให้คุณเห็นบรรทัดในล็อกไฟล์

ฉันใช้ RHEL 5.10


4
ใช้tail -f error.log
garethTheRed

อาจึงtailเป็นวิธีที่ถูกต้องในการใช้หรือไม่ ว้าวฉันไม่คิดว่าฉันจะใช้มันได้ ฉันคาดหวังว่าจะแสดงออกได้นานขึ้น
Kevdog777

1
FYI ขณะที่หางเป็นเครื่องมือสำหรับงานที่แท้จริงopen a text file and let it update itselfสามารถ achived watch cat filenameกับ
คธูลู

1
@Cululhu คุณหมายถึงwatch cat filenameหรือคล้ายกัน จะพยายามที่จะดำเนินการwatch filename filename
terdon

@terdon ใช่แน่นอน
คธูลู

คำตอบ:


29

คุณกำลังมองหาtail -f error.log(จากman tail):

   -f, --follow[={name|descriptor}]
          output appended data as the file grows; -f, --follow, and --fol‐
          low=descriptor are equivalent

ที่จะช่วยให้คุณดูไฟล์และดูการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับมัน


และนี่จะไม่ใช้ทรัพยากรมากไปใช่ไหม
Kevdog777

1
@ Kevdog777 ไม่จริง ๆ ไม่ มันน่าจะเป็นเพียงแค่เปิดไฟล์ทุกสองสามวินาทีเพื่ออัปเดต นี่เป็นวิธีที่คลาสสิกในการทำสิ่งที่คุณต้องการ
terdon

1
@terdon ก็กลับมาคึกคัก (อาจจะเปิดอีกครั้ง) -Fกับ ด้วย-fมันอ่านทุกวินาที while cat; do sleep 1; done < fileมันเหมือน ดูinotailที่ Linux สำหรับหางที่มีปฏิกิริยามากกว่า(ใช้inotifyเพื่อทราบเมื่อไฟล์ถูกแก้ไข)
Stéphane Chazelas

@ StéphaneChazelas: ฉันแน่ใจว่ามันมีประสิทธิภาพมากกว่านั้น ฉันจะเดิมพันมันใช้เลือกหรือแบบสำรวจความคิดเห็นเพื่อดูว่า fd สามารถอ่านได้แล้วนอนจนกว่าจะมีข้อมูลใน fd แม้ว่าฉันจะผิดทั้งหมด
Martin York

1
@ LokiAstari คุณไม่สามารถมีประสิทธิภาพมากขึ้นกว่าที่readระบบจะเรียกทุกวินาที "อ่าน" selectหรือpollไฟล์ปกติจะกลับมาจริงเสมอเนื่องจากread()ไม่เคยบล็อกไฟล์ปกติดังนั้นจะไม่ทำงาน ต้องบอกว่าtailตอนนี้GNU ใช้inotifyบน Linux จึงinotailไม่จำเป็นอีกต่อไป
Stéphane Chazelas

20

ใช้ "น้อยกว่า" แทน "หาง" สำหรับการเลื่อนและค้นหา

คุณสามารถใช้tail -f error.logหรือดีกว่า:tail -F error.logหรือดีกว่า:

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

กับ

less +F error.log

คุณจะได้รับการทำงานของtail -f,
แต่สามารถ หยุดยั้งการอ่านของการป้อนข้อมูลใหม่ที่มีCtrl+C +

จากนั้นคุณอยู่ในlessโหมดปกติ
ซึ่งคุณสามารถเลื่อนกลับเพื่อดูสิ่งที่คุณอาจพลาดด้วยUp/ Down
นอกจากนี้คุณสามารถอ่านบรรทัดไฟล์บันทึกที่ยาวโดยไม่ต้องใช้คำสั่งLeft /Right

ค้นหาและแสดงเฉพาะบรรทัดที่ตรงกัน

นอกจากนี้คุณยังสามารถค้นหานิพจน์ปกติ/, ?สำหรับย้อนกลับnและNสำหรับถัดไป / ก่อนหน้า

น่าสนใจมากสำหรับล็อกไฟล์ที่คุณสามารถซ่อนทุกสายที่ไม่ตรงสำหรับการค้นหาด้วย&, กรองเอาเฉพาะการแข่งขัน

กุญแจบนบรรทัดคำสั่ง

เมื่อFอยู่ด้านในของโหมดlessคุณจะดำเนินการต่อ ในบรรทัดคำสั่งหมายถึง "กดปุ่มเหล่านี้ได้โดยตรงหลังจากที่เริ่มต้นน้อย" tail -f
+less +F

ดังนั้นเราจึงใช้ปุ่มกดFเมื่อเริ่มต้นซึ่งอธิบายว่า:

F  Scroll  forward,  and  keep trying to read when the end of file is
   reached.  Normally this command would be used when already at  the
   end  of the file.  It is a way to monitor the tail of a file which
   is growing while it is being viewed.  (The behavior is similar  to
   the "tail -f" command.)

ดูเพิ่มเติมmultitailหากคุณต้องการดูไฟล์บันทึกมากกว่าหนึ่งไฟล์


ขอบคุณ แต่tail -f error.logเหมาะสำหรับสิ่งที่ฉันต้องการ ล็อกไฟล์จะได้รับการอัพเดตทุกชั่วโมงเท่านั้นจึงเพียงพอสำหรับการใช้งานของฉัน :-)
Kevdog777

1
อย่าลืมจำครั้งต่อไป;)
Volker Siegel

mostนอกจากนี้ยังมีโหมดที่มีtail -f F
Stéphane Chazelas

@ StéphaneChazelasถูกต้องขอบคุณ! อืม ... ข้าจำได้ว่ามีคนขอบคุณข้าที่พูดถึงmostเมื่อไม่นานมานี้ ... และข้าก็ลืมมันไป
Volker Siegel

@ StéphaneChazelas แต่mostดูเหมือนจะไม่มีคุณสมบัติตัวกรองน้อยกว่าที่&จะแสดงเฉพาะบรรทัดที่ตรงกันเท่านั้น คุณสมบัติที่มีประโยชน์ในไฟล์บันทึกมักจะ
Volker Siegel

5

ใช้-fตัวเลือกด้วยtail:

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

หรือใช้Fคำสั่งภายในless:

   F      Scroll forward, and keep trying to read when the end of file is reached.  Normally this command would be used when already at the end of the file.  It is a way to mon‐
          itor the tail of a file which is growing while it is being viewed.  (The behavior is similar to the "tail -f" command.)

มีอะไรใหม่ในคำตอบนี้?
bluefoggy

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