Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> สมาร์ทโฟน >> Linux

วิธีติดตามไฟล์แบบ Real-time ใน Linux ด้วยคำสั่ง tail

คู่มือนี้สอนวิธีใช้คำสั่ง tail -f และ tail -F เพื่อติดตามเนื้อหาไฟล์ที่อัปเดตอยู่ตลอดเวลา เช่นไฟล์ Log

การใช้งานพื้นฐาน: tail -f

# tail -f /var/log/httpd/access.log
  • แสดง 10 บรรทัดสุดท้ายของไฟล์
  • รอและแสดงบรรทัดใหม่ทันทีที่มีการเขียนข้อมูล
  • กด Ctrl+C เพื่อออก

ปัญหาของ tail -f และวิธีแก้: tail -F

ปัญหา: หากไฟล์ Log ถูก Rotate (ย้ายไฟล์เก่า สร้างไฟล์ใหม่) tail -f จะหยุดทำงานเพราะยังติดกับ File Descriptor เดิม

แก้ด้วย: ใช้ตัว F พิมพใหญ่

# tail -F /var/log/httpd/access.log
  • -F = --follow=name --retry
  • ติดตามด้วย ชื่อไฟล์ ไม่ใช่ File Descriptor
  • เมื่อไฟล์ถูก Rotate จะเปิดไฟล์ใหม่ต่ออัตโนมัติ
  • แนะนำให้ใช้ -F เสมอ เพราะปลอดภัยกว่า

ตัวเลือกเพิ่มเติมที่มีประโยชน์

ตัวอย่างการใช้งานจริง

# ติดตาม Apache access log แสดง 50 บรรทัดล่าสุด
tail -n 50 -F /var/log/httpd/access.log

# ติดตามหลายไฟล์พร้อมกัน
tail -F /var/log/httpd/access.log /var/log/httpd/error.log

# ติดตาม systemd journal (ทางเลือกทันสมัยกว่า)
journalctl -f -u nginx

ข้อจำกัด

  • ไม่สามารถ Scroll ขึ้น-ลงได้ (เพราะเป็นการ streaming)
  • หากต้องการค้นหาใน log แบบโต้ตอบ ใช้ less +F แทน

คำสั่ง tail -F เป็นเครื่องมือจำเป็นสำหรับ SysAdmin และ Developer ในการ Monitor Log แบบ Real-time

ตัวเลือกคำอธิบาย
-n 50แสดง 50 บรรทัดสุดท้าย (แทนค่าเริ่มต้น 10 บรรทัด)
-fติดตามแบบปกติ (หยุดทำงานถ้าไฟล์ rotate)
-Fติดตามแบบติดตามชื่อไฟล์ (แนะนำ)
-qไม่แสดงชื่อไฟล์เมื่อติดตามหลายไฟล์