ฉันจะตั้งค่า logrotate เพื่อหมุนเวียนบันทึกรายชั่วโมงได้อย่างไร


23

ตามที่ Unix และ Linux บริหารคู่มือและman, logrotate มีตัวเลือกสำหรับdaily, weeklyและmonthlyแต่จะมีวิธีการเพิ่มhourlyตัวเลือก?

โพสต์บล็อกนี้พูดถึงคุณสามารถตั้งค่าsize 1และลบตัวเลือกเวลา (เช่น: daily) แล้วโทรด้วยตนเองlogrotateด้วยcron- ผมคิดว่าสิ่งที่ต้องการ

logrotate -f /etc/logrotate.d/my-hourly-file

แต่มีวิธีแก้ปัญหาที่สง่างามกว่าสำหรับการหมุนบันทึกทุกชั่วโมงหรือไม่


แน่ใจ ระบบปฏิบัติการของคุณคือรุ่นอะไร?
นิลส์

ubuntu 10.04 และ 11
cwd

คำตอบ:


20

ขึ้นอยู่กับระบบปฏิบัติการของคุณ ลีนุกซ์บางตัว (ทั้งหมด?) มีไดเร็กตอรี่/etc/cron.hourlyที่คุณสามารถใส่งาน cron ให้ทำงานทุกชั่วโมง

/etc/cron.d/คนอื่นมีไดเรกทอรี ที่นั่นคุณสามารถใส่งาน cron ที่จะถูกดำเนินการเป็นผู้ใช้พิเศษที่มีการตั้งค่า cron ปกติของรายการ crontab (และคุณต้องระบุชื่อผู้ใช้)

หากคุณใช้อย่างใดอย่างหนึ่งเหล่านี้แทนสคริปต์การหมุนบันทึกมาตรฐานใน/etc/cron.daily/คุณควรคัดลอกสคริปต์นั้นcp /dev/nullไปยังตำแหน่งเดิม มิฉะนั้นจะถูกเปิดใช้งานอีกครั้งโดยการอัพเดตแพทช์ logate

สำหรับการหมุนรายชั่วโมงที่เหมาะสมให้ระวังว่าdateextคำสั่งนั้นไม่ได้ตั้งไว้ หากเป็นเช่นนั้นตามค่าเริ่มต้นไฟล์ที่หมุนครั้งแรกจะได้รับการขยายวันที่ปัจจุบันเช่น YYYYMMDD จากนั้นครั้งที่สองที่ logrotate จะเริ่มทำงานภายในวันเดียวกันมันจะข้ามการหมุนแม้ว่าจะsizeเกินขีด จำกัด ก็ตาม

เหตุผลคือชื่อใหม่ของไฟล์ที่จะหมุนอยู่แล้วและ logrotate ไม่ได้ผนวกเนื้อหาไปยังไฟล์เก่าที่มีอยู่ ยกตัวอย่างเช่นใน RHEL และ CentOS ที่สั่งจะได้รับโดยเริ่มต้นในdateext /etc/logrotate.confหลังจากลบหรือแสดงความคิดเห็นบรรทัดนั้นไฟล์ที่หมุนแล้วจะได้รับหมายเลขเรียกใช้เป็นส่วนขยายจนกว่าจะถึงrotateค่า ด้วยวิธีนี้เป็นไปได้ที่จะทำการหมุนหลายครั้งต่อวัน


5

เพียงเพิ่มคำตอบ Nils หากเปลี่ยนตำแหน่งของlogrotateสคริปต์ในกล่อง Debian หรือ Ubuntu มันอาจจะปลอดภัยกว่าที่จะใช้dpkg-divertแทนการคัดลอกไฟล์และคัดลอก/dev/nullไปยังตำแหน่งเดิมเช่น:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

ฉันไม่รู้เรื่องนี้และฉันใช้ Ubuntu มานานหลายปี ขอขอบคุณ. :)
Vaughany

2

อีกตัวเลือกหนึ่งจะเพิ่มคำสั่ง logrotate ลงในรายการ crontab จากนั้นมันจะทำงานทุกชั่วโมง

crontab -e

เพิ่มบรรทัดด้านล่างลงในรายการ crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.