logrotate hàng ngày và kích thước?


40

Nếu một cấu hình logrotate được chỉ định với các tham số "kích thước" và "hàng ngày", cái nào được ưu tiên? Tài liệu này ở đâu? Tôi muốn các phép quay này xảy ra như một phép toán HOẶC boolean, nghĩa là, nếu các bản ghi đã cũ một ngày chúng sẽ được xoay, HOẶC nếu chúng lớn hơn một kích thước nhất định, chúng cũng sẽ được xoay. Tuy nhiên, logrotate hiện chỉ sử dụng chỉ thị "kích thước" và dường như bỏ qua chỉ thị "hàng ngày". Logrotate được thiết lập để chạy mỗi giờ. Hệ điều hành là các dẫn xuất linux, Red Hat và Debian.

Ngoài ra, trước tiên tôi chỉ định "hàng ngày", sau đó "kích thước" từ đầu tệp. Không chắc thứ tự có quan trọng không, nhưng trong mọi trường hợp, người ta phải đến trước trong tệp cấu hình ...

Cảm ơn!



> định nghĩa cục bộ ghi đè lên định nghĩa toàn cầu và định nghĩa sau> ghi đè định nghĩa trước đó từ trang quản lý logrotate 3.8.7
John Bob Joe

Câu trả lời:


62

Nếu chỉ thị kích thước được sử dụng, logrotate sẽ bỏ qua các chỉ thị hàng ngày , hàng tuần , hàng thánghàng năm . Điều này không rõ ràng trong tài liệu khi bạn thực hiện man logrotatelệnh. Tuy nhiên nó có thể được xác nhận trong thực tế, và được đề cập trong một số bài đăng trên blog tùy ý như bài này .

Có một lệnh được gọi là minize mà theo trang man logrotate là chỉ thị kích thước duy nhất có thể được sử dụng cùng với các lệnh thời gian. Tuy nhiên, nó vẫn không phải là những gì bạn muốn. Sử dụng minize với hàng ngày về cơ bản nói rằng: xoay các bản ghi hàng ngày, nhưng chỉ khi chúng có kích thước tối thiểu #MB .

Đến nay tôi không tìm thấy cách nào để logrotate thực hiện điều kiện bạn yêu cầu: xoay mỗi ngày, trừ khi kích thước vượt quá #MB, trong trường hợp đó xoay ngay lập tức . Tôi không nghĩ rằng điều này được hỗ trợ bằng cách chỉ sử dụng các chỉ thị logrotate. Có thể thực hiện với một số kịch bản thông minh thông qua các chỉ thị móc kịch bản như prerotate , postrotate , FirstactionLastaction .

Cập nhật :

Kể từ logrotate 3.8.1, maxsizetimeperiodđược hỗ trợ cùng nhau, đó sẽ là giải pháp lý tưởng. Xem câu trả lời cho bài đăng này: Làm thế nào để xoay nhật ký dựa trên một khoảng thời gian trừ khi nhật ký vượt quá một kích thước nhất định?


4
Tùy chọn tốt nhất có lẽ là sử dụng hai lệnh cron riêng biệt, chạy để chạy nó hàng ngày với conf mặc định và cứ sau x một phút sẽ cấu hình chỉ với các tệp mà bạn lo lắng về việc sử dụng chỉ thị kích thước chứ không phải hàng ngày.
SilverbackNet

8
Kể từ logrotate 3,81, maxsizetimeperiodđược hỗ trợ. Mỗi serverfault.com/questions/474941/...
belacqua

1
@belacqua Tôi đang sử dụng 3.8.7 và timeperiod không có trong người đàn ông.
JorgeeFG

Phiên bản chính xác là 3.8.1, không phải 3.81.
Tom Miller

2

Câu trả lời đầu tiên của @egg là, theo kinh nghiệm của tôi với logrotate, không đúng!

Nếu hàng ngày, hàng tháng, ... đến trước và sau chỉ thị kích thước đó , hàng ngày, hàng tháng, ... sẽ bị bỏ qua và chỉ thị kích thước sẽ áp dụng cho tệp nhật ký.

Tương tự như vậy khi tôi lần đầu tiên sử dụng chỉ thị kích thước sau đó chỉ thị hàng ngày, hàng tuần, hàng tháng và hàng năm , chỉ thị kích thước sẽ bị bỏ qua.


1

Nếu bạn thêm hàng ngày, nó sẽ xoay mỗi ngày ngay cả khi điều kiện Kích thước được đáp ứng. Nếu bạn thêm điều kiện kích thước, bạn có thể nhận được hai lần quay trong một ngày tùy thuộc vào mức độ dài của việc ghi nhật ký.

Nếu hàng ngày đi trước trong tập lệnh thì Kích thước có thể không tắt.


sử dụng tùy chọn verbose để xem quy tắc nào được sử dụng. Từ các thử nghiệm của tôi, tôi tin rằng chỉ có quy tắc cuối cùng được sử dụng vì các quy tắc cụ thể hơn có thể ghi đè lên các quy tắc chung hơn.
Bram

Nhiều vòng quay hơn là OK, vì đó sẽ là hành vi dự kiến. (boolean HOẶC) Tuy nhiên, vấn đề của tôi là những phép quay này không xảy ra. Nó dường như là một lỗi (có thể là một tính năng) của xoay vòng nhật ký, vì tôi không thể thấy thứ tự của các chỉ thị là quan trọng hoặc được ghi lại ở bất cứ đâu.
quần mèo

bạn có thể đưa ra một ví dụ về logrotate.conf của bạn và các tệp bạn đang cố gắng nhắm mục tiêu không? Hàng ngày không có điều kiện khác sau đó tiến triển thời gian. Kích thước có điều kiện.
Paul Hickox

/tmp/output.log {kích thước hàng ngày 1k xoay 5}
quần mèo

1
Tệp này được xoay khi kích thước lớn hơn 1k, nhưng nó không được xoay hàng ngày như mong muốn và mong muốn.
quần mèo

1

Trên thực tế, trang người đàn ông của tôi trên Red Hat dường như khá rõ ràng về sự khác biệt giữa kích thước và kích thước phút:

kích thước tối thiểu

          Log  files  are rotated when they grow bigger then size bytes,
          but  not  before  the  additionally  specified  time  interval
          (daily,  weekly, monthly, or yearly).  The related size option
          is similar except that it is mutually exclusive with the  time
          interval  options, and it causes log files to be rotated with-
          out regard for the last rotation time.  When minsize is  used,
          both the size and timestamp of a log file are considered.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.