คุณอธิบายtailยูทิลิตี้GNU ความแตกต่างระหว่างการตั้งค่าสถานะทั้งสองนี้คือถ้าฉันเปิดไฟล์ล็อกไฟล์เช่นนี้:
$ tail -f /var/log/messages
... และถ้าหากสิ่งอำนวยความสะดวกในการหมุนบันทึกในเครื่องของฉันตัดสินใจที่จะหมุนไฟล์บันทึกนั้นในขณะที่ฉันกำลังดูข้อความที่กำลังเขียน ("หมุน" หมายถึงลบหรือย้ายไปยังตำแหน่งอื่น ฯลฯ ) ผลลัพธ์ที่ฉันเห็นจะ หยุด.
ถ้าฉันเปิดไฟล์tailแบบนี้:
$ tail -F /var/log/messages
... และอีกครั้งไฟล์จะถูกหมุน, การส่งออกจะยังคงไหลในคอนโซลของฉันเพราะtailจะเปิดแฟ้มเร็วที่สุดเท่าที่มันจะกลายเป็นใช้ได้อีกครั้งคือเมื่อโปรแกรม (s) เขียนเพื่อบันทึกเริ่มเขียนไปใหม่ /var/log/messages
ในระบบ BSD ฟรีไม่มี-Fตัวเลือก แต่tail -fจะทำงานเหมือนtail -Fในระบบ GNU โดยมีความแตกต่างที่คุณได้รับข้อความ
tail: file has been replaced, reopening.
ในเอาต์พุตเมื่อไฟล์ที่คุณกำลังตรวจสอบหายไปและปรากฏขึ้นอีกครั้ง
คุณสามารถทดสอบสิ่งนี้ได้
ในหนึ่งเซสชั่นเปลือกทำ
$ cat >myfile
ตอนนี้จะรอให้คุณพิมพ์รายการ เพียงไปข้างหน้าและพิมพ์ซึ่งพูดพล่อยๆไม่กี่บรรทัด มันจะถูกบันทึกลงในไฟล์myfileทั้งหมด
ในเชลล์เซสชั่นอื่น (อาจอยู่ในเทอร์มินัลอื่นโดยไม่ขัดจังหวะcat ):
$ tail -f myfile
สิ่งนี้จะแสดงเนื้อหา (จุดสิ้นสุด) ของmyfileในคอนโซล หากคุณกลับไปที่เซสชันแรกของเชลล์และพิมพ์อะไรเพิ่มเติมออกผลลัพธ์นั้นจะปรากฏทันทีtailในเซสชันเชลล์ที่สอง
ตอนนี้เลิกcatได้โดยการกดCtrl+Dและลบmyfileไฟล์:
$ rm myfile
จากนั้นเรียกใช้แมวอีกครั้ง:
$ cat >myfile
... และพิมพ์บางอย่างไม่กี่บรรทัด
ด้วย GNU tailบรรทัดเหล่านี้จะไม่ปรากฏขึ้นในเซสชั่นเปลือกที่สอง (ซึ่งtail -fยังคงทำงานอยู่)
ทำซ้ำการออกกำลังกายด้วยtail -Fและสังเกตความแตกต่าง