ฉันมีการกำหนดค่า logrotate ต่อไปนี้:
/var/log/chrony/*.log {
รายวัน
หายไป
ไม่สร้าง
สูงสุด 5
สคริปต์ที่ใช้ร่วมกัน
หลังการหมุน
/usr/bin/chronyc -a cyclelogs > /dev/null 2>&1 || จริง
ลงท้าย
}
ครั้งแรกที่รัน logrotate ระบบจะคัดลอกไฟล์บันทึกลำดับเหตุการณ์ทั้งหมดไปยังไฟล์ที่มีนามสกุล .log อย่างที่ควรจะเป็น ความคาดหวังของฉันคือหลังจากสิ่งนี้เกิดขึ้น postrotate ควรรันและ chronyc ควรสร้างไฟล์ใหม่ที่ลงท้ายด้วย .log สิ่งนี้ไม่ได้เกิดขึ้น ตัวอย่างเช่น นี่คือรายการไดเร็กทอรีของฉันในขณะนี้:
[บันทึก]# ls /var/log/chrony
การวัด.log-20210727 สถิติ.log-20210727 การติดตาม.log-20210727
ถ้าฉันรันคำสั่ง logrotate ด้วยมือ นี่คือสิ่งที่ฉันได้รับ
[บันทึก] # /usr/bin/chronyc -d -a cyclelogs
แก้ไข 127.0.0.1 เป็น 127.0.0.1
แก้ไข ::1 ถึง ::1
กำลังเปิดการเชื่อมต่อกับ /var/run/chrony/chronyd.sock
ส่ง 28 ไบต์
หมดเวลา 0.999857 วินาที
ได้รับ 28 ไบต์
ตอบกลับ cmd=37 ตอบกลับ=1 stat=0
200 ตกลง
ดูเหมือนว่าจะสำเร็จ แต่รายชื่อไดเร็กทอรีไม่เปลี่ยนแปลง ไม่มีการสร้างไฟล์บันทึกใหม่และยังคงเขียนข้อความบันทึกใหม่ไปยังไฟล์ที่หมุน สิ่งที่แปลกจริงๆ คือฉันมีสคริปต์ล็อกโรเตตนี้บนเซิร์ฟเวอร์ประมาณ 50 เครื่องและใช้งานได้ไม่กี่เครื่อง เซิร์ฟเวอร์ทั้งหมดกำลังเรียกใช้ CentOS 7 (CentOS 7 หลายเวอร์ชัน แต่ฉันไม่เห็นรูปแบบ) เซิร์ฟเวอร์ทั้งหมดกำลังเรียกใช้ chrony-3.2-2.el7
ฉันไม่คิดว่า logrotate เป็นปัญหาที่นี่เนื่องจากการรันคำสั่ง cyclelogs ดูเหมือนจะไม่ได้ทำสิ่งที่ถูกต้องแม้ว่าฉันจะรันนอก logrotate ก็ตาม ฉันเข้าใจผิดว่าไซเคิลล็อกควรทำอะไร? โปรดทราบว่าหากฉันรีสตาร์ท chronyd จะสร้างไฟล์บันทึกใหม่ตามที่ฉันคาดไว้