เราใช้ส่วนท้ายเพื่อตรวจสอบบันทึกหลาย ๆ ชุดอย่างต่อเนื่อง แต่เมื่อมีการหมุนบันทึกส่วนท้ายสำหรับไฟล์นั้นจะหยุด
เท่าที่ฉันเข้าใจปัญหาคือเมื่อบันทึกการหมุนแล้วจะมีไฟล์ใหม่ที่สร้างขึ้นและกระบวนการ tail run ไม่ทราบอะไรเกี่ยวกับการจัดการไฟล์ใหม่
เราใช้ส่วนท้ายเพื่อตรวจสอบบันทึกหลาย ๆ ชุดอย่างต่อเนื่อง แต่เมื่อมีการหมุนบันทึกส่วนท้ายสำหรับไฟล์นั้นจะหยุด
เท่าที่ฉันเข้าใจปัญหาคือเมื่อบันทึกการหมุนแล้วจะมีไฟล์ใหม่ที่สร้างขึ้นและกระบวนการ tail run ไม่ทราบอะไรเกี่ยวกับการจัดการไฟล์ใหม่
คำตอบ:
อ่ามีธงสำหรับสิ่งนี้
แทนที่จะใช้tail -f /var/log/file
เราควรใช้tail -F /var/log/file
tail -F
แปลtail --follow=name --retry
เป็นใน;
--follow=name
: ทำตามชื่อไฟล์แทน file descriptor--retry
: หากไฟล์ไม่สามารถเข้าถึงได้ให้ลองอีกครั้งในภายหลังแทนที่จะตาย# tail --follow=mylog.log
จากหางคน :
With --follow (-f), tail defaults to following the file descriptor,
which means that even if a tail’ed file is renamed, tail will continue
to track its end. This default behavior is not desirable when you
really want to track the actual name of the file, not the file descrip‐
tor (e.g., log rotation). Use --follow=name in that case. That causes
tail to track the named file by reopening it periodically to see if it
has been removed and recreated by some other program.
ดังนั้นในกรณีนี้การใช้-F
ตัวเลือกจะถูกต้อง
-F same as --follow=name --retry
คำตอบที่แน่นอนขึ้นอยู่กับระบบปฏิบัติการของคุณ - แต่ในหลาย ๆ กรณีtail -F
จะทำในสิ่งที่ถูกต้อง
tail -F or tail --follow = name
IMHO เป็นเรื่องแปลกเล็กน้อยที่จะเปลี่ยนไฟล์บันทึกของคุณเป็น SIZE แทนที่จะเป็นวันที่ บันทึกระบบส่วนใหญ่ (ในระบบปฏิบัติการยูนิกซ์หรือลินุกซ์) จะหมุนเวียนเป็นรายสัปดาห์หรือรายเดือนและไม่ขึ้นอยู่กับขนาด ... นี่คือสิ่งที่ฉันชอบด้วยเหตุผลหลายประการและสิ่งที่หากนำมาใช้จะช่วยแก้ปัญหาของคุณได้
แปดปีต่อมาฉันไม่รู้ว่าฉันกำลังพูดอะไรอยู่ที่นี่: มีหลาย ๆ ที่ที่คุณต้องการหมุนตามขนาดเนื่องจากการหมุนทุกวัน / สัปดาห์ / เดือนสามารถให้ไฟล์ขนาดใหญ่ซึ่งอาจทำให้เกิดปัญหาร้ายแรง
จากมุมมองที่มีประสบการณ์คำถามที่แท้จริงคือสาเหตุที่คุณต้องการนั่งและต่อท้ายไฟล์ที่เติบโตอย่างรวดเร็วจนคุณหมุนมันมากกว่าทุกวัน ... มันเหมือนกับการดูกระแส Matrix โดย
วันนี้คุณควรมองหาการรวมบันทึกข้อมูลขนาดใหญ่เช่น Splunk หรือ Sumologic ซึ่งสามารถกรองเหตุการณ์บันทึกในคลาสและทริกเกอร์ตามค่าบันทึกที่เฉพาะเจาะจง ... ไม่จำเป็นต้องดูบันทึกสด
ฉันใช้คำสั่งบนเซิร์ฟเวอร์ที่ใช้งานจริง:
tail --follow var/log/apache-access_log --retry
นอกจากนี้มันอาจจะหนักเกินไปสำหรับวัตถุประสงค์ของคุณเล็กน้อย แต่ความกล้าหาญมีคุณลักษณะหางเพื่อทำสิ่งที่คุณต้องการ ฟรีสูงสุด 500 MB / วัน แต่หากข้อมูลของคุณมีขนาดเกินกว่าที่กำหนดไว้มันจะไม่คุ้มค่ากับราคา