Logrotate và mở tập tin


21

Làm thế nào để logrotate xử lý các tập tin mở? Logrotate có thể xoay các tập tin mà một quá trình đã mở không?

Câu trả lời:


7

Đối với những ứng dụng không chấp nhận tín hiệu từ logrotate như Rory mô tả, tôi sử dụng một vài phương pháp.

  1. Sử dụng tùy chọn copytruncate
  2. Thêm một tuyên bố sau xoay để khởi động lại dịch vụ

Quyết định sử dụng cái nào phụ thuộc vào cả kích thước của tệp nhật ký và sự cần thiết của nhật ký liền mạch. Đó sẽ là một phân tích rủi ro từ phía bạn. Tuy nhiên, để đưa ra một ví dụ, tôi sử dụng khởi động lại sau xoay trên một số nhật ký nhất định mà tôi thực sự nên sử dụng một bản sao. Tuy nhiên, các tệp thường là một vài hợp đồng biểu diễn và bản sao có thể mất một thời gian đủ dài để mất một hoặc hai giây mỗi đêm là tốt hơn.


Xin lỗi vì beign quá muộn, nhưng tôi đoán tôi có thể tiết kiệm thời gian cho những người khác đang tìm kiếm vấn đề này. Hãy xem một cách tiếp cận khác để giải quyết điều này. unix.stackexchange.com/a/122942/189725
Victor

17

Có vẻ như tôi có thể muốn những điều sau đây, nhưng vẫn quan tâm đến chuyên môn của bất kỳ ai về chủ đề này:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 

1
Nó giống như thực hiện "cp Something.log Something.log.1;:> Something.log" để tập tin bị trống nhưng tập tin trên đó không bị hỏng. Vấn đề là thời gian giữa 2 lệnh, bạn có thể mất một số dòng nhật ký
bán kính

5

logrotate sẽ gửi tín hiệu chính xác đến quy trình để báo cho nó mở lại các tệp nhật ký. Nó hoạt động vượt trội cho những thứ như apache hoặc mysql.

Bạn có thể thấy điều này trong kịch bản postrotate cho apache. Nếu bạn có trình nền của riêng mình và bạn muốn logrotate hoạt động với nó, thì hãy chắc chắn rằng nó lắng nghe một tín hiệu nhất định và mở lại các tệp nhật ký.

Nếu bạn không thể thay đổi chương trình, thì bạn có thể xem liệu daemon có cách tự động xóa nhật ký hay không. Hoặc thêm một prerotate dừng máy chủ và postrotate khởi động lại nó.


Được rồi, đừng nghĩ rằng tôi sẽ khiến các nhà phát triển làm điều đó, nhưng thật tuyệt khi biết tiêu chuẩn là gì :-)
Kyle Brandt
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.