เมื่อใช้ logrotate จาก cronjob ฉันได้รับข้อผิดพลาดนี้:
error: unable to open /var/log/mylog.1 for compression
ไม่มีใครรู้ว่ามันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร
เมื่อใช้ logrotate จาก cronjob ฉันได้รับข้อผิดพลาดนี้:
error: unable to open /var/log/mylog.1 for compression
ไม่มีใครรู้ว่ามันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร
คำตอบ:
หมายความว่า/var/log/mylog.1
ไม่มีอยู่หรือสิทธิ์ / ความเป็นเจ้าของไม่อนุญาตให้บีบอัดไฟล์นั้น ตรวจสอบสิทธิ์ / ls -l /var/log/mylog*
เจ้าของด้วย
คุณจะต้องได้รับข้อมูลเพิ่มเติม
มีไฟล์อยู่หรือไม่และผู้ใช้ cron มีสิทธิ์อ่านมันหรือไม่:
ls -l /var/log/mylog.1
ดูว่า logrotate สามารถให้ข้อมูลเพิ่มเติมได้หรือไม่ มันควรจะมีธง verbose คุณสามารถเปิดด้วย '-v'
หากไฟล์มีอยู่และการอนุญาตไม่เป็นไปตามนั้นสาเหตุอาจเป็นได้ว่าไฟล์นั้นเปิดอยู่เมื่อคุณพยายามบีบอัดไฟล์ เพื่อหลีกเลี่ยงปัญหาดังกล่าวคุณสามารถเพิ่มบรรทัดต่อไปนี้ใน/etc/logrotate.conf
:
delaycompress
ฉันเพิ่งพบข้อผิดพลาดนี้เอง สรุป: มันเป็นข้อขัดแย้งระหว่างlogrotate
และสคริปต์ postrotate ที่ฉันเขียนซึ่งในบางกรณีlogrotate
สคริปต์ของฉันจะลบไฟล์บันทึกที่เพิ่งย้ายซึ่งถูกบีบอัด แม้ว่าคุณจะคิดว่าlogrotate
จะบีบอัดไฟล์แล้วเรียกใช้สคริปต์หลังการหมุน แต่จริงๆแล้วมันจะดำเนินการตามลำดับอื่น ดังนั้นข้อความผิดพลาดนี้
เนื่องจากlogrotate
จัดการไฟล์โดยตรงที่คำถามแสดงว่าหายไปฉันไม่สามารถนึกถึงสิ่งอื่นที่อาจทำให้เกิดปัญหานี้ได้เว้นแต่จะมีบางสิ่งที่แปลกจริง ๆ เกี่ยวกับการอนุญาตไฟล์ (เช่นเขียนได้และอ่านไม่ได้)