logrotate ทุกวันและขนาด?


40

หากมีการระบุการกำหนดค่า logrotate ด้วยพารามิเตอร์ "ขนาด" และ "รายวัน" สิ่งใดที่จะมาก่อน เอกสารนี้อยู่ที่ไหน ฉันต้องการให้การหมุนเหล่านี้เกิดขึ้นเป็นการดำเนินการแบบบูลหรือเช่นถ้าบันทึกมีอายุหนึ่งวันพวกเขาจะถูกหมุนหรือถ้าพวกเขามีขนาดใหญ่กว่าขนาดที่กำหนดพวกเขาก็จะได้รับการหมุนด้วย อย่างไรก็ตามขณะนี้ logrotate ใช้คำสั่ง "ขนาด" เท่านั้นและดูเหมือนจะไม่สนใจคำสั่ง "รายวัน" มีการตั้งค่า Logrotate ให้ทำงานทุก ๆ ชั่วโมง ระบบปฏิบัติการคือ linux, Red Hat และ Debian Derivatives

นอกจากนี้ฉันกำลังระบุ "รายวัน" ก่อนจากนั้น "ขนาด" จากจุดเริ่มต้นของไฟล์ ไม่แน่ใจว่าคำสั่งซื้อมีความสำคัญหรือไม่ แต่ไม่ว่าในกรณีใดต้องมีลำดับมาก่อนในไฟล์ config

ขอบคุณ!



> คำจำกัดความในท้องถิ่นจะแทนที่ค่าโกลบอลและนิยามในภายหลัง> แทนที่คำจำกัดความก่อนหน้านี้จาก manpage ของ logrotate 3.8.7
John Bob Joe

คำตอบ:


61

ถ้าขนาดสั่งจะใช้ logrotate จะไม่สนใจรายวัน , รายสัปดาห์ , รายเดือนและรายปีสั่ง ไม่ชัดเจนในเอกสารประกอบเมื่อคุณดำเนินการman logrotateคำสั่ง แต่ก็สามารถที่จะได้รับการยืนยันในทางปฏิบัติและมีการกล่าวถึงในบล็อกโพสต์บางส่วนโดยพลการเช่นนี้

มีคำสั่งที่เรียกว่าminsizeซึ่งตามหน้า man logrotate เป็นคำสั่งขนาดเดียวที่สามารถใช้ร่วมกับเวลา อย่างไรก็ตามมันยังไม่ได้สิ่งที่คุณต้องการ ใช้MinSizeกับชีวิตประจำวันเป็นหลักว่า: หมุนบันทึกประจำวัน แต่เมื่อพวกเขาอยู่ที่ #MB น้อยในขนาด

ในวันที่ฉันได้พบวิธีการใด ๆ กับ logrotate จะทำเงื่อนไขที่คุณต้องการ: หมุนทุกวันยกเว้นกรณีที่มีขนาดเกินกว่า #MB ซึ่งในกรณีนี้หมุนทันที ฉันไม่คิดว่าสิ่งนี้ได้รับการสนับสนุนโดยใช้คำสั่ง logrotate เท่านั้น มันอาจจะเป็นไปได้ที่จะทำอย่างไรกับบางสคริปต์ฉลาดผ่านคำสั่งสคริปต์เบ็ดเช่นprerotate , postrotate , firstactionและlastaction

อัปเดต :

ณ วันที่ 3.8.1 logrotate maxsizeและtimeperiodได้รับการสนับสนุนร่วมกันซึ่งจะเป็นทางออกที่ดี ดูคำตอบสำหรับโพสต์นี้: วิธีการหมุนบันทึกตามช่วงเวลาเว้นแต่บันทึกมีขนาดเกินขนาดที่แน่นอน?


4
ตัวเลือกที่ดีที่สุดอาจจะใช้คำสั่ง cron แยกกันสองคำสั่งรันเพื่อรันทุกวันด้วยค่าเริ่มต้นและหนึ่งทุก ๆ x นาทีที่กำหนดค่าด้วยไฟล์ที่คุณกังวลเกี่ยวกับการล้นโดยใช้คำสั่งขนาดไม่ใช่รายวัน
SilverbackNet

8
ตั้งแต่ logrotate 3.81 maxsizeและtimeperiodได้รับการสนับสนุน ต่อserverfault.com/questions/474941/…
belacqua

1
@belacqua ฉันใช้ 3.8.7 และ timeperiod ไม่ได้อยู่ในคน
JorgeeFG

เวอร์ชันที่ถูกต้องคือ 3.8.1 ไม่ใช่ 3.81
Tom Miller

2

คำตอบแรกโดย @egg คือตามประสบการณ์ของฉันกับ logrotate ไม่เป็นความจริง!

หากรายวันรายเดือน ...มาก่อนและหลังคำสั่งขนาดนั้นรายวันรายเดือน ...จะถูกละเว้นและคำสั่งขนาดจะมีผลกับไฟล์บันทึก

ในทำนองเดียวกันเมื่อฉันใช้คำสั่งขนาดจากนั้นเป็นรายวันรายสัปดาห์รายเดือนและรายปีคำสั่งขนาดจะถูกละเว้น


1

ถ้าคุณเพิ่มรายวันมันจะหมุนในแต่ละวันแม้ว่าจะตรงกับขนาดของเงื่อนไข หากคุณเพิ่มเงื่อนไขขนาดเช่นกันคุณอาจได้รับการหมุนเวียนสองครั้งในหนึ่งวันขึ้นอยู่กับว่าการบันทึกเป็นอย่างไร

หาก Daily ไปก่อนในสคริปต์ดังนั้นขนาดอาจไม่ทำงาน


ใช้ตัวเลือก verbose เพื่อดูกฎที่ใช้ จากการทดสอบของฉันฉันเชื่อว่ามีการใช้กฎสุดท้ายเท่านั้นเนื่องจากกฎเฉพาะเพิ่มเติมสามารถแทนที่กฎทั่วไปได้มากกว่า
Bram

การหมุนมากขึ้นก็โอเคเพราะจะเป็นพฤติกรรมที่คาดหวัง (บูลีน OR) อย่างไรก็ตามปัญหาของฉันคือการหมุนเหล่านี้ไม่ได้เกิดขึ้น ดูเหมือนว่าจะเป็นข้อผิดพลาด (อาจเป็นฟีเจอร์) ของการหมุนบันทึกเนื่องจากฉันไม่สามารถเห็นลำดับของคำสั่งที่มีความสำคัญหรือบันทึกไว้ที่ใดก็ได้
กางเกงแมว

คุณสามารถยกตัวอย่าง logrotate.conf และไฟล์ที่คุณพยายามกำหนดเป้าหมายได้หรือไม่ รายวันไม่ได้มีเงื่อนไขอื่น ๆ แล้วความก้าวหน้าของเวลา ขนาดเป็นเงื่อนไข
Paul Hickox

/tmp/output.log {ขนาดรายวัน 1k หมุน 5}
กางเกงแมว

1
ไฟล์นี้จะหมุนเมื่อมีขนาดมากกว่า 1k แต่จะไม่หมุนทุกวันตามที่คาดหวังและต้องการ
กางเกงแมว

1

จริงๆแล้วหน้าคนของฉันใน Red Hat ดูเหมือนจะค่อนข้างชัดเจนกับความแตกต่างระหว่างขนาดและขนาดเล็ก:

ขนาดเล็ก

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.