logrotate จัดการกับไฟล์ที่เปิดอย่างไร สามารถหมุนไฟล์หมุนเวียนในกระบวนการที่เปิดอยู่ได้หรือไม่
logrotate จัดการกับไฟล์ที่เปิดอย่างไร สามารถหมุนไฟล์หมุนเวียนในกระบวนการที่เปิดอยู่ได้หรือไม่
คำตอบ:
สำหรับแอปพลิเคชั่นที่ไม่รับสัญญาณจาก logrotate ตามที่อธิบายไว้ใน Rory ฉันใช้วิธีการสองสามวิธี
การตัดสินใจว่าจะใช้ไฟล์ใดขึ้นอยู่กับขนาดของไฟล์บันทึกและความจำเป็นในการใช้ไฟล์บันทึกอย่างราบรื่น นั่นจะเป็นการวิเคราะห์ความเสี่ยงในส่วนของคุณเอง อย่างไรก็ตามเพื่อให้เป็นตัวอย่างฉันใช้การรีสตาร์ท post-rotation ในบางล็อกที่จริง ๆ แล้วฉันควรใช้ copytruncate อย่างไรก็ตามไฟล์มักจะมีหลายกิ๊กและการคัดลอกอาจใช้เวลานานพอที่จะเสียวินาทีหรือสองในแต่ละคืนได้ดีกว่า
ดูเหมือนว่าฉันอาจต้องการสิ่งต่อไปนี้ แต่ยังสนใจในความเชี่ยวชาญของทุกคนในหัวข้อ:
copytruncate
Truncate the original log file to zero size in place after cre‐
ating a copy, instead of moving the old log file and optionally
creating a new one.
logrotate จะส่งสัญญาณที่ถูกต้องไปยังกระบวนการเพื่อบอกให้เปิดไฟล์บันทึกอีกครั้ง มันทำงานนอกกรอบสำหรับสิ่งต่าง ๆ เช่น apache หรือ mysql
คุณสามารถดูได้ในสคริปต์ postrotate สำหรับ apache หากคุณมีภูตของคุณเองและคุณต้องการให้ logrotate ทำงานให้ตรวจสอบให้แน่ใจว่ามันรับฟังสัญญาณที่แน่นอนและเปิดไฟล์บันทึกอีกครั้ง
หากคุณไม่สามารถเปลี่ยนโปรแกรมได้คุณสามารถดูว่า daemon มีวิธีในการล้างข้อมูลบันทึกโดยอัตโนมัติหรือไม่ หรือเพิ่ม prerotate ที่หยุดเซิร์ฟเวอร์และ postrotate ที่เริ่มต้นอีกครั้ง