เป็นไปได้ไหมที่จะเรียกใช้การตรวจสอบ logrotate หนึ่งครั้งด้วยตนเอง?


541

เป็นไปได้หรือไม่ที่จะเรียกใช้ logrotate ซ้ำหนึ่งรอบด้วยตนเองโดยไม่ต้องกำหนดเวลาในบางช่วงเวลา?


3
ปัญหาเกี่ยวกับ logrotate คือมีไฟล์ Global configuration หนึ่งไฟล์และจะไม่อนุญาตให้คุณเรียกใช้ไฟล์ย่อยย่อยหมุนวนไฟล์บันทึกเดียวในขณะที่ยังคงใช้งานตัวเลือกที่ตั้งไว้ในไฟล์กำหนดค่าส่วนกลาง นั่นคือมันไม่มีวิธีที่ดีในการเรียกใช้เพียงหนึ่งการตรวจสอบไฟล์การหมุนวนรอบอย่างแน่นอนเหมือนเมื่อเรียกใช้ทุกคืนจาก cron มันสามารถทำได้ด้วยตัวเลือก 'จำกัด ไฟล์บันทึกเหล่านี้' หรือดีกว่ายังคง 'รันการกำหนดค่าทั่วโลก แต่รวมเฉพาะไฟล์ย่อยการกำหนดค่านี้'
anthony

คำตอบ:


717

ใช่: logrotate --force $CONFIG_FILE


115
โปรดทราบว่า--forceจะหมุนเวียนไฟล์แม้ว่าพวกเขาจะไม่ตรงตามเกณฑ์ที่ระบุเช่นขนาดเล็ก, อายุ, ฯลฯ
xofer

4
หากคุณวางไฟล์กำหนดค่า logrotate ใน /etc/logrotate.d/custom.conf หมายความว่าคุณไม่จำเป็นต้องระบุขนาด / เวลาเมื่อบันทึกควรหมุนโดยอัตโนมัติ หรือคุณควรกำหนดค่าไว้ในโฟลเดอร์อื่นถ้าคุณไม่ต้องการให้มันหมุนโดยอัตโนมัติ
Damainman

18
เกณฑ์ "notifempty" ไม่ได้ถูกละเว้นโดย "--force" สิ่งนี้ทำให้ฉันงงชั่วขณะหนึ่งดังนั้นฉันจึงพูดถึงสิ่งนี้เป็นข้อยกเว้นสำหรับคำสั่ง @xofer
thelogix

16
คุณสามารถหมุนทั้งหมดด้วยlogrotate --force /etc/logrotate.d/(เพียงชื่อไดเรกทอรี)
fcm

1
เป็นความจริงที่--forceจะบังคับให้มีการหมุนเวียนแม้ว่าไฟล์จะไม่ตรงตามเกณฑ์ (อายุ, ขนาด, ฯลฯ ) แต่โปรดพิจารณาว่านี่เป็นวิธีเดียวที่จะตรวจสอบปัญหาที่แท้จริงที่เกิดขึ้นโดยที่logrotate -dจะไม่เกิดขึ้น (ตัวอย่างเช่นฉันมีเซิร์ฟเวอร์หมด พื้นที่เนื่องจาก logrotate ไม่ทำงานเป็นเวลาหลายเดือน ... และขอบคุณที่--forceฉันคิดออกว่ามีFile existsข้อผิดพลาดฉันลบไฟล์เหล่านั้นด้วยตนเองและตอนนี้การหมุนจะทำงานได้อย่างถูกต้องอีกครั้ง
lucaferrario

559

logrotate -d [your_config_file] เรียกใช้โหมดดีบักซึ่งให้คำอธิบายแบบละเอียดเกี่ยวกับสิ่งที่จะเกิดขึ้น แต่ปล่อยให้ล็อกไฟล์ไม่ถูกแตะต้อง


81
ผู้ที่มาที่นี่กำลังมองหาคำตอบของคำถามเช่น "ฉันจะทดสอบความสับสนของ logrotate ได้อย่างไร" สามารถเอาอันนี้มาเป็นคำตอบได้เพราะมันแค่ทดสอบความ
เชื่อมั่น

ฉันไม่ลองด้วยวิธีของคุณlogrotate --forceและทำงานได้ดี
Benyamin Jafari

122

หากคุณต้องการบังคับให้ไดเรกทอรีเดียวหรือไฟล์บันทึกของ 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 เพียงอย่างเดียวจะถูกหมุน


1
สิ่งนี้ดีและดี แต่คุณสูญเสียการตั้งค่าระดับโลกที่คุณมีใน "/etc/logrotate.conf" ฉันเขียนสคริปต์เพื่อรวมไฟล์ logrotate ทั่วโลกและเฉพาะเข้าด้วยกันจากนั้นใช้มันเพื่อแก้ปัญหานี้ (ดูคำตอบของฉัน)
anthony

การใช้logrotate -d /etc/logrotate.confจะทำงานผ่านไฟล์ conf อื่น ๆ ที่รวมอยู่ด้วย
wmassingham


36

วิธีการเรียกใช้ logrotate ทั้งหมดคือ:

logrotate -f /etc/logrotate.conf

ที่จะเรียกใช้ไฟล์ logrotate หลักซึ่งรวมถึงการกำหนดค่า logrotate อื่น ๆ เช่นกัน


21

ออกคำสั่งต่อไปนี้วิธีการเรียกใช้ 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
}

plus1 สำหรับการให้ตัวอย่างที่สมบูรณ์ PS วิธีที่เราสามารถตรวจสอบสิ่งที่ logrotate ไม่จริงไปยังไฟล์ ?
personal_cloud

7

แก้ไข /var/lib/logrotate.status เพื่อรีเซ็ตวันที่ 'หมุนครั้งสุดท้าย' ในไฟล์บันทึกที่คุณต้องการทดสอบ

logrotate YOUR_CONFIG_FILEจากนั้นเรียก

หรือคุณสามารถใช้แฟล็ก --force แต่การแก้ไข logrotate.status จะช่วยให้คุณมีความแม่นยำมากกว่าในสิ่งที่ทำและไม่หมุน


/var/lib/logrotate.statusไฟล์นี้ไม่มีอยู่ใน Debian Squeeze
Lashae

ลอง / var / lib / logrotate / status ฉันไม่แน่ใจว่านี่เป็นสิ่งที่ debian / redhat หรือถ้าฉันใส่ "." ที่ฉันควรจะใส่ "/"
Ben Aveling

2

สร้างเชลล์สคริปต์เพื่อแก้ปัญหา

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

สคริปต์นี้จะทำงานเพียงไฟล์ย่อยการกำหนดค่า logrotate เดียวที่พบใน "/etc/logrotate.d" แต่รวมถึงการตั้งค่าระดับโลกจากในแฟ้มการกำหนดค่าส่วนกลาง "/etc/logrotate.conf" คุณยังสามารถใช้ otpions อื่น ๆ เพื่อทดสอบ ...

ตัวอย่างเช่น...

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