ฉันมีแอพพลิเคชั่น linux ที่เขียนข้อมูลการบันทึกลงในไฟล์บันทึกอย่างต่อเนื่องเช่น /var/log/application.log
. เนื่องจากแอปพลิเคชันไม่หมุนไฟล์โดยอัตโนมัติไฟล์บันทึกนี้สามารถมีขนาดถึงกิกะไบต์ในบางสัปดาห์ดังนั้นฉันจึงต้องการหมุนไฟล์นี้อย่างถูกต้อง
ข้อกังวลหลักของฉันคือการหมุนไฟล์ที่แอปพลิเคชันเปิดอยู่ตลอดเวลาฉันอาจต้อง:
ย้ายไฟล์ไปยังแบบฟอร์มที่หมุน
/var/log/application.log -> /var/log/application.log.2013-01-28
/var/log/application.log
สร้างที่ว่างเปล่า Obs:ณ จุดนี้กระบวนการของแอปพลิเคชันยังคงเขียนอยู่/var/log/application.log.2013-01-28
เปลี่ยน file descriptor ของกระบวนการแอ็พพลิเคชันให้ชี้กลับไปเป็น
/var/log/application.log
ดังนั้นฉันถูกไหม ถ้าเป็นเช่นนั้นฉันจะทำสิ่งนี้ได้อย่างไร (ส่วนใหญ่เป็นการเปลี่ยนส่วนของตัวอธิบายไฟล์)
ถ้าฉันไม่ใช่วิธีที่ถูกต้องคืออะไรและทำอย่างไร?
dup2
ใหม่ตัวบ่งชี้ใหม่ทับตัวเก่าจากนั้นปิดตัวบ่งชี้ใหม่)