Tôi có cấu hình logrotate sau:
/var/log/chrony/*.log {
hằng ngày
mất tích
không tạo
tối đa 5
chia sẻ kịch bản
quay sau
/usr/bin/chronyc -a cyclelogs > /dev/null 2>&1 || thật
phần cuối
}
Lần đầu tiên logrotate chạy, nó sao chép tất cả các tệp nhật ký chrony sang các tệp có phần mở rộng .log. đúng như nó phải thế. Kỳ vọng của tôi là sau khi điều này xảy ra, postrotate sẽ chạy và chronyc sẽ tạo các tệp mới kết thúc bằng .log. Điều này không xảy ra. Ví dụ: đây là danh sách thư mục của tôi ngay bây giờ:
[log]# ls /var/log/chrony
đo lường.log-20210727 stats.log-20210727 theo dõi.log-20210727
Nếu tôi chạy lệnh logrotate bằng tay thì đây là những gì tôi nhận được
[log]# /usr/bin/chronyc -d -a cyclelogs
Đã giải quyết 127.0.0.1 thành 127.0.0.1
Đã giải quyết ::1 thành ::1
Đang mở kết nối tới /var/run/chrony/chronyd.sock
Đã gửi 28 byte
Thời gian chờ 0,999857 giây
Đã nhận được 28 byte
Trả lời cmd=37 trả lời=1 chỉ số=0
200 được
Vì vậy, có vẻ như nó đã thành công nhưng danh sách thư mục không thay đổi. Không có tệp nhật ký mới nào được tạo và thông báo nhật ký mới vẫn được ghi vào tệp đã xoay. Điều thực sự kỳ lạ là tôi có tập lệnh logrotate này trên khoảng 50 máy chủ và nó hoạt động trên một số ít. Tất cả các máy chủ đang chạy CentOS 7 (một số phiên bản khác nhau của CentOS 7, nhưng tôi không thể thấy mẫu nào). Tất cả các máy chủ đang chạy chrony-3.2-2.el7
Tôi không nghĩ logrotate là vấn đề ở đây, vì việc chạy lệnh cyclelogs dường như không hoạt động đúng ngay cả khi tôi chạy nó bên ngoài logrotate. Tôi có hiểu nhầm những gì Cyclelogs phải làm không? Lưu ý rằng nếu tôi khởi động lại chronyd, nó sẽ tạo các tệp nhật ký mới như tôi mong đợi