Có thể chạy một kiểm tra logrotate bằng tay?


541

Có thể chạy một lần lặp logrotate bằng tay mà không cần lập lịch cho nó trong một khoảng thời gian không?


3
Vấn đề với logrotate là nó có một tệp cấu hình Toàn cầu và KHÔNG cho phép bạn chạy một tệp cấu hình phụ xoay vòng nhật ký trong khi vẫn áp dụng các tùy chọn được đặt trong tệp cấu hình chung. Đó là nó không có một cách hay để chạy chỉ kiểm tra tệp xoay vòng MỘT bản ghi, chính xác như khi chạy mỗi đêm từ cron. Nó có thể làm với tùy chọn 'giới hạn đối với các tệp nhật ký này hoặc tốt hơn là' chạy cấu hình chung, nhưng chỉ bao gồm tệp cấu hình phụ này '.
anthony

Câu trả lời:


717

Đúng: logrotate --force $CONFIG_FILE


115
lưu ý rằng --forcesẽ xoay (các) tệp ngay cả khi chúng không đáp ứng các tiêu chí được chỉ định, chẳng hạn như minize, tuổi, v.v.
xofer

4
Nếu bạn đặt tệp cấu hình logrotate trong /etc/logrotate.d/custom.conf thì điều này có nghĩa là gì, bạn không cần chỉ định kích thước / thời gian khi nhật ký sẽ tự động xoay? Hoặc bạn nên đặt cấu hình trong một thư mục khác nếu bạn không có ý định làm cho nó tự động xoay?
Damainman

18
Các tiêu chí "đáng chú ý" không được bỏ qua bởi "--force". Điều này làm tôi bối rối trong một thời gian, vì vậy tôi đề cập đến điều này như một ngoại lệ đối với tuyên bố @xofer.
thelogix

16
Bạn chỉ có thể xoay tất cả với logrotate --force /etc/logrotate.d/(chỉ tên thư mục)
fcm

1
Đúng là --forcesẽ buộc luân chuyển ngay cả khi các file không đáp ứng tiêu chí (tuổi tác, kích thước, vv), nhưng hãy xem xét rằng đây là cách duy nhất để phát hiện những vấn đề thực sự mà có logrotate -dsẽ không xuất hiện (ví dụ, tôi đã có một máy chủ đang chạy ra khỏi không gian do logrotate không chạy trong nhiều tháng ... và nhờ --forcetôi phát hiện ra rằng có File existslỗi. Tôi đã xóa thủ công các tệp đó và bây giờ xoay chính xác hoạt động trở lại!
lucaferrario

559

logrotate -d [your_config_file] gọi chế độ gỡ lỗi, cung cấp cho bạn một mô tả dài dòng về những gì sẽ xảy ra, nhưng không để lại các tệp nhật ký.


81
những người đến đây để tìm câu trả lời của một câu hỏi như "làm thế nào tôi có thể kiểm tra logrotate conf của tôi?" có thể lấy câu hỏi này làm câu trả lời, vì nó chỉ
KIỂM TRA

không nao núng với cách tiếp cận của bạn, tôi đã cố gắng logrotate --forcevà làm việc tốt.
Benyamin Jafari

122

Nếu bạn muốn chạy một thư mục cụ thể hoặc tệp nhật ký của daemon, bạn thường có thể tìm thấy cấu hình trong đó /etc/logrotate.dvà chúng sẽ hoạt động độc lập.

Hãy nhớ rằng cấu hình toàn cầu được chỉ định trong /etc/logrotate.confsẽ không áp dụng, vì vậy nếu bạn làm điều này, bạn nên đảm bảo bạn chỉ định tất cả các tùy chọn bạn muốn trong /etc/logrotate.d/[servicename]tệp cấu hình cụ thể.

Bạn có thể dùng thử -dđể xem điều gì sẽ xảy ra:

logrotate -df /etc/logrotate.d/nginx

Sau đó, bạn có thể chạy (sử dụng nginx làm ví dụ):

logrotate -f /etc/logrotate.d/nginx

Và các bản ghi nginx một mình sẽ được xoay.


1
Đây là tốt và tốt, nhưng bạn bị mất bất kỳ cài đặt toàn cầu mà bạn có trong "/etc/logrotate.conf". Tôi đã viết một tập lệnh để hợp nhất các tệp logrotate toàn cầu và cụ thể lại với nhau sau đó sử dụng nó để giải quyết vấn đề này. (xem câu trả lời của tôi).
anthony

Sử dụng logrotate -d /etc/logrotate.confsẽ chạy qua bất kỳ tập tin conf bao gồm khác quá.
wmassingham

61

Bạn có thể muốn chạy nó trong chế độ dài + lực.

logrotate -vf /etc/logrotate.conf


36

Cách để chạy tất cả logrotate là:

logrotate -f /etc/logrotate.conf

sẽ chạy tệp logrotate chính, bao gồm các cấu hình logrotate khác.


21

Ban hành lệnh sau, cách để chạy logrotate được chỉ định:

logrotate -vf /etc/logrotate.d/custom

Tùy chọn:

-v: hiển thị quá trình

-f: buộc chạy

tùy chỉnh: cài đặt nhật ký do người dùng xác định

ví dụ: mongodb-log

# mongodb-log rotate

/data/var/log/mongodb/mongod.log {
    daily
    dateext
    rotate 30
    copytruncate
    missingok
}

plus1 để thực sự cung cấp một ví dụ hoàn chỉnh. PS Làm thế nào chúng ta có thể xác định những gì logrotate thực sự làm cho các tập tin ?
Personal_cloud

7

chỉnh sửa /var/lib/logrotate.status để đặt lại ngày 'xoay vòng cuối cùng' trên tệp nhật ký bạn muốn kiểm tra.

Sau đó chạy logrotate YOUR_CONFIG_FILE.

Hoặc bạn có thể sử dụng cờ --force, nhưng chỉnh sửa logrotate.status cho bạn độ chính xác cao hơn so với những gì không và không được xoay.


Tập /var/lib/logrotate.statustin này không tồn tại trên Debian Squeeze.
Lashae

Hãy thử / var / lib / logrotate / status. Tôi không chắc đây có phải là một thứ debian / redhat hay nếu tôi đặt "." nơi tôi nên đặt "/".
Ben Aveling

2

Tạo một kịch bản shell để giải quyết vấn đề.

http://www.ict.griffith.edu.au/anthony/software/#logrotate_one

Tập lệnh này sẽ chỉ chạy tệp cấu hình phụ logrotate duy nhất được tìm thấy trong "/etc/logrotate.d", nhưng bao gồm các cài đặt chung từ trong tệp cấu hình toàn cầu "/etc/logrotate.conf". Bạn cũng có thể sử dụng các otpions khác để kiểm tra nó ...

Ví dụ...

  logrotate_one -d syslog
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.