เป็นไปได้หรือไม่ที่จะเรียกใช้ logrotate ซ้ำหนึ่งรอบด้วยตนเองโดยไม่ต้องกำหนดเวลาในบางช่วงเวลา?
เป็นไปได้หรือไม่ที่จะเรียกใช้ logrotate ซ้ำหนึ่งรอบด้วยตนเองโดยไม่ต้องกำหนดเวลาในบางช่วงเวลา?
คำตอบ:
ใช่: logrotate --force $CONFIG_FILE
--force
จะหมุนเวียนไฟล์แม้ว่าพวกเขาจะไม่ตรงตามเกณฑ์ที่ระบุเช่นขนาดเล็ก, อายุ, ฯลฯ
logrotate --force /etc/logrotate.d/
(เพียงชื่อไดเรกทอรี)
--force
จะบังคับให้มีการหมุนเวียนแม้ว่าไฟล์จะไม่ตรงตามเกณฑ์ (อายุ, ขนาด, ฯลฯ ) แต่โปรดพิจารณาว่านี่เป็นวิธีเดียวที่จะตรวจสอบปัญหาที่แท้จริงที่เกิดขึ้นโดยที่logrotate -d
จะไม่เกิดขึ้น (ตัวอย่างเช่นฉันมีเซิร์ฟเวอร์หมด พื้นที่เนื่องจาก logrotate ไม่ทำงานเป็นเวลาหลายเดือน ... และขอบคุณที่--force
ฉันคิดออกว่ามีFile exists
ข้อผิดพลาดฉันลบไฟล์เหล่านั้นด้วยตนเองและตอนนี้การหมุนจะทำงานได้อย่างถูกต้องอีกครั้ง
logrotate -d [your_config_file]
เรียกใช้โหมดดีบักซึ่งให้คำอธิบายแบบละเอียดเกี่ยวกับสิ่งที่จะเกิดขึ้น แต่ปล่อยให้ล็อกไฟล์ไม่ถูกแตะต้อง
logrotate --force
และทำงานได้ดี
หากคุณต้องการบังคับให้ไดเรกทอรีเดียวหรือไฟล์บันทึกของ daemon คุณสามารถค้นหาการกำหนดค่าได้จาก/etc/logrotate.d
นั้นจะทำงานแบบสแตนด์อโลน
โปรดทราบว่าการกำหนดค่าส่วนกลางที่ระบุใน/etc/logrotate.conf
จะไม่ใช้ดังนั้นหากคุณทำเช่นนี้คุณควรตรวจสอบให้แน่ใจว่าคุณระบุตัวเลือกทั้งหมดที่คุณต้องการใน/etc/logrotate.d/[servicename]
ไฟล์กำหนดค่าโดยเฉพาะ
คุณสามารถลองด้วย-d
เพื่อดูว่าจะเกิดอะไรขึ้น:
logrotate -df /etc/logrotate.d/nginx
จากนั้นคุณสามารถเรียกใช้ (โดยใช้ nginx เป็นตัวอย่าง):
logrotate -f /etc/logrotate.d/nginx
และบันทึก nginx เพียงอย่างเดียวจะถูกหมุน
logrotate -d /etc/logrotate.conf
จะทำงานผ่านไฟล์ conf อื่น ๆ ที่รวมอยู่ด้วย
คุณอาจต้องการเรียกใช้ในโหมด verbose + force
logrotate -vf /etc/logrotate.conf
วิธีการเรียกใช้ logrotate ทั้งหมดคือ:
logrotate -f /etc/logrotate.conf
ที่จะเรียกใช้ไฟล์ logrotate หลักซึ่งรวมถึงการกำหนดค่า logrotate อื่น ๆ เช่นกัน
ออกคำสั่งต่อไปนี้วิธีการเรียกใช้ logrotate ที่ระบุ:
logrotate -vf /etc/logrotate.d/custom
ตัวเลือก:
-v: แสดงกระบวนการ
-f: บังคับให้เรียกใช้
กำหนดเอง: การตั้งค่าบันทึกที่ผู้ใช้กำหนด
เช่น mongodb-log
# mongodb-log rotate
/data/var/log/mongodb/mongod.log {
daily
dateext
rotate 30
copytruncate
missingok
}
แก้ไข /var/lib/logrotate.status เพื่อรีเซ็ตวันที่ 'หมุนครั้งสุดท้าย' ในไฟล์บันทึกที่คุณต้องการทดสอบ
logrotate YOUR_CONFIG_FILE
จากนั้นเรียก
หรือคุณสามารถใช้แฟล็ก --force แต่การแก้ไข logrotate.status จะช่วยให้คุณมีความแม่นยำมากกว่าในสิ่งที่ทำและไม่หมุน
/var/lib/logrotate.status
ไฟล์นี้ไม่มีอยู่ใน Debian Squeeze
สร้างเชลล์สคริปต์เพื่อแก้ปัญหา
http://www.ict.griffith.edu.au/anthony/software/#logrotate_one
สคริปต์นี้จะทำงานเพียงไฟล์ย่อยการกำหนดค่า logrotate เดียวที่พบใน "/etc/logrotate.d" แต่รวมถึงการตั้งค่าระดับโลกจากในแฟ้มการกำหนดค่าส่วนกลาง "/etc/logrotate.conf" คุณยังสามารถใช้ otpions อื่น ๆ เพื่อทดสอบ ...
ตัวอย่างเช่น...
logrotate_one -d syslog