Làm cách nào tôi có thể thiết lập logrotate để xoay vòng nhật ký hàng giờ?


23

Theo các các Sổ tay quản trị Unix và Linux và man, logrotate có các tùy chọn cho daily, weeklymonthly, nhưng có một cách để thêm một hourlylựa chọn?

Bài đăng trên blog này đề cập đến bạn có thể đặt size 1và xóa tùy chọn thời gian (ví dụ daily:) và sau đó gọi thủ công logrotatebằng cron- Tôi giả sử một cái gì đó như

logrotate -f /etc/logrotate.d/my-hourly-file

Nhưng có một giải pháp thanh lịch hơn cho việc quay vòng gỗ hàng giờ?


Chắc chắn rồi. Hệ điều hành của bạn là gì, phiên bản nào?
Nils

ubfox 10.04 và 11
cwd

Câu trả lời:


20

Tùy thuộc vào hệ điều hành của bạn. Một số (tất cả?) Các bản phân phối Linux có một thư mục /etc/cron.hourlynơi bạn có thể đặt các công việc cron được thực thi mỗi giờ.

Những người khác có một thư mục /etc/cron.d/. Ở đó, bạn có thể đặt các công việc định kỳ sẽ được thực thi như bất kỳ người dùng đặc biệt nào với các cài đặt cron thông thường của mục nhập crontab (và bạn phải chỉ định tên người dùng).

Nếu bạn sử dụng một trong hai thứ này thay cho tập lệnh xoay vòng nhật ký tiêu chuẩn, /etc/cron.daily/bạn nên sao chép tập lệnh đó ở đó và cp /dev/nullđến vị trí ban đầu. Khác nó sẽ được kích hoạt lại bởi một bản cập nhật vá logrotate.

Đối với luân chuyển theo giờ thích hợp, cũng chăm sóc mà dateextchỉ là không thiết lập. Nếu vậy, theo mặc định, tệp được xoay đầu tiên sẽ nhận được phần mở rộng của ngày hiện tại như YYYYMMDD. Sau đó, lần thứ hai logrotate sẽ hoạt động trong cùng một ngày, nó chỉ cần bỏ qua vòng quay ngay cả khi sizengưỡng đã vượt quá.

Lý do là tên mới của tệp được xoay đã tồn tại và logrotate không nối thêm nội dung vào tệp cũ hiện có. Ví dụ trên RHEL và CentOS, dateextchỉ thị được đưa ra theo mặc định trong /etc/logrotate.conf. Sau khi xóa hoặc nhận xét dòng đó, các tệp được xoay sẽ chỉ nhận được một số đang chạy dưới dạng phần mở rộng cho đến khi đạt được rotategiá trị. Theo cách này, có thể thực hiện nhiều vòng quay một ngày.


5

Chỉ cần thêm vào câu trả lời của Nils, nếu thay đổi vị trí của logrotatetập lệnh trên hộp Debian hoặc Ubuntu, có thể sử dụng an toàn hơn dpkg-divertthay vì chỉ sao chép tệp và sao chép /dev/nullvào vị trí ban đầu, ví dụ:

dpkg-divert --add --rename --divert /etc/cron.hourly/logrotate /etc/cron.daily/logrotate

Tôi đã không biết về điều này và tôi đã sử dụng Ubuntu trong nhiều năm. Cảm ơn bạn. :)
Vaughany

2

Một tùy chọn khác sẽ là thêm lệnh logrotate vào danh sách crontab. Sau đó, nó sẽ thực hiện cho mỗi giờ.

crontab -e

thêm dòng dưới đây vào danh sách crontab

0 * * * * /usr/sbin/logrotate /etc/logrotate.d/my-hourly-file
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.