Logic logrotate trên centos
Mình có 1 đoạn config logrotate như vậy
/home/me/public_html/logs/*.log {
daily
missingok
rotate 15
compress
delaycompress
notifempty
create 0660 me www-data
}
Giả sử mình setup config vào ngày 01/01 4:00 PM.
Crontab chạy lúc 1:00 AM mỗi ngày.
Và kết quả là 1:00 AM ngày 02/01 có status logrotate. Nhưng không có file rotate.
Nhưng đến ngày 03/01 lại có có file rotated ngày 02/01 và cả file rotate ngày 03/01. Có bạn nào có thể giải thích giúp mình được không ạ?
1 CÂU TRẢ LỜI
Theo như config kia thì anh thấy là syntax và cấu hình đúng rồi em ạ. Không biết em đang check như nào để nhận định là "không có file rotate" nhỉ? Có khi nào em đang filter theo các file .log.*.gz
nên nhận định như vậy không?
Trong config của em anh thấy có dùng compress
kết hợp với delaycompress
. Khi bật delaycompress
thì sẽ chưa có file archive (*.gz) của file log mới đâu. VD:
- Ngày 01/01 -> tạo file log cho ngày 01/01, chưa có file gz nào được tạo.
- Ngày 02/01 -> tạo file log cho ngày 02/01, archive file log ngày 01/01, chưa có file gz cho ngày 02/01.
- Ngày 03/01 -> tạo file log cho ngày 03/01, archive file log ngày 02/01, chưa có file gz cho ngày 03/01.
Em thử bỏ cái delaycompress
thì file log rotate mới sẽ được archive thành file *.gz
luôn.
Em check xem trên server thì timezone đang là bao nhiêu. Có thể ngày 02/01 trên máy em nhưng tên server thì nó vẫn đang là ngày 01/01 thôi.
@huukimit Em có check timezone rồi. Không phải vấn đề timezone anh ạ Với cả logrotate đã được thực hiện vì em kiểm tra file status thì có lưu log. Tuy nhiên lại không thấy file rotated được tạo ra vào ngày đâu tiên??? Nhưng đến ngày thứ 2 thì em lại thấy có cả file rotated của ngày đầu tiên và ngày thứ 2???
Em đang thắc mắc là nếu logic là sau 1 ngày file rotated mới được tạo ra vậy tại sao ngày thứ 03 đã có file rotated của ngày 03. Đáng nhẽ chỉ có file của ngày 02 thôi chứ. Ngược lại, nếu logic là file rotated được tạo ngay trong ngày, vậy tại sao lại không có file rotated vào ngày 02???