การทำงานของ logrotate วิธีการตั้งค่าใน /etc/logrotate.conf และ /etc/logrotate.d รวมถึงวิธีทดสอบกฎอย่างปลอดภัย
logrotate เป็นยูทิลิตีบน Linux ที่ทำหน้าที่หมุนเวียน บีบอัด และลบไฟล์บันทึก (log files) เพื่อไม่ให้พื้นที่ดิสก์เต็ม โดยปกติจะทำงานวันละครั้งผ่าน systemd timer หรือ cron job และจะอ่านค่าจาก /etc/logrotate.conf รวมถึงกฎเฉพาะของแต่ละแพ็กเกจใน /etc/logrotate.d/
กฎหนึ่งข้อจะระบุชื่อไฟล์บันทึกหนึ่งไฟล์หรือมากกว่า พร้อมด้วยคำสั่งต่างๆ เช่น daily หรือ weekly (ความถี่ในการหมุนเวียน), rotate 7 (จำนวนไฟล์เก่าที่จะเก็บไว้), compress (บีบอัดไฟล์เก่าด้วย gzip), missingok (ไม่แสดงข้อผิดพลาดหากไม่มีไฟล์), notifempty (ข้ามไฟล์บันทึกที่ว่างเปล่า) และ postrotate ... endscript (คำสั่งที่จะรันหลังจากหมุนเวียนไฟล์เสร็จสิ้น เช่น เพื่อเปิดไฟล์บันทึกใหม่อีกครั้ง)
โปรแกรมบางตัวยังคงเขียนข้อมูลลงในไฟล์เดิมที่เปิดค้างไว้ copytruncate จะทำการคัดลอกไฟล์บันทึกแล้วจึงตัดทอน (truncate) ไฟล์ต้นฉบับแทนการย้ายไฟล์ เพื่อให้โปรแกรมยังคงรักษา file handle เดิมไว้ได้ แต่อาจมีข้อมูลบางบรรทัดที่เขียนขึ้นระหว่างการคัดลอกสูญหายไปบ้าง
'logrotate -d /etc/logrotate.conf' จะทำงานในโหมดดีบั๊กและแสดงผลเฉพาะสิ่งที่อาจเกิดขึ้นเท่านั้น ส่วน '-f' จะเป็นการบังคับให้หมุนเวียนไฟล์ทันทีแม้จะยังไม่ถึงกำหนดก็ตาม
/etc/logrotate.d/myapp พร้อมระบุพาธของไฟล์บันทึกและคำสั่งต่างๆ เช่น weekly, rotate 4, compress, missingok, notifemptysudo logrotate -d /etc/logrotate.d/myappsudo logrotate -f /etc/logrotate.d/myappอัปเดตล่าสุด: 2026-10-08
วิธีอ่านบันทึกด้วย journalctl ตรวจสอบพื้นที่ที่ journal ใช้งาน และลดขนาดอย่างปลอดภัยด้วยตัวเลือก --vacuum
วิธีค้นหาว่าสิ่งใดทำให้ดิสก์ Linux เต็มด้วย du และ ncdu แบบโต้ตอบ พร้อมตัวเลือกที่จำกัดการทำงานอยู่ภายในระบบไฟล์เดียว
วิธีที่ cron ใช้รันงานตามกำหนดการ, ฟิลด์เวลาทั้งห้าของ crontab, ตำแหน่งที่เก็บไฟล์ cron ของระบบ และการเปรียบเทียบกับ systemd timers