cú pháp tập tin cấu hình logrotate - nhiều mục nhập ký tự đại diện có thể?


83

Vì trang nam không trả lời câu hỏi của tôi và tôi không muốn thực hiện chu kỳ xoay vòng, tôi quyết định đặt câu hỏi ở đây.

Trang man cho logrotate đưa ra ví dụ sau:

   "/var/log/httpd/access.log" /var/log/httpd/error.log {
       rotate 5
       mail www@my.org
       size 100k
       sharedscripts
       postrotate
           /usr/bin/killall -HUP httpd
       endscript
   }

Tất cả các ví dụ với ký tự đại diện chỉ chứa một mục duy nhất. Bây giờ, điều tôi quan tâm là liệu cái này cũng được cho phép hay không:

   /var/log/httpd/*.log /var/log/httpd/*/*.log {
       # ... same as above
   }

Đây là lý do: Tôi có nhiều vhost và tôi chia chúng ra bởi người dùng "sở hữu" các vhost đó. Vì các tệp nhật ký có thể đọc được trên thế giới, tôi muốn liên kết gắn một thư mục vào thư mục nhà của người dùng, nhưng giới hạn ở các tệp nhật ký mà người dùng "sở hữu", dễ dàng đạt được bằng cách tách nhật ký thành các thư mục (và liên kết -mounting yêu cầu chương trình đó anyway). Vì vậy, tôi đang tìm một giải pháp để xoay cả các tệp nhật ký bên dưới /var/log/httpdcũng như tất cả các tệp nhật ký trong thư mục con của thư mục đó - mà không phải liệt kê từng thư mục con theo tên.

Nói chung, trang man không đưa ra manh mối nào cho dù có nhiều mục nhập cho các quy tắc ký tự đại diện hay chỉ cho các đường dẫn đầy đủ. Tôi đang sử dụng phiên bản logrotate 3.7.8-6 đi kèm với Debian "Squeeze", nhưng tôi cho rằng điều này không nhất thiết phải dành riêng cho phiên bản phân phối hoặc chương trình.

Câu trả lời:


119

Có, bạn có thể sử dụng nhiều thẻ hoang dã. Bạn có thể kiểm tra tệp của mình mà không thực hiện các phép quay thực tế bằng cách thực hiện việc này:

logrotate -d -f /etc/logrotate.conf
  • -d = Bật chế độ gỡ lỗi. Trong chế độ gỡ lỗi, sẽ không có thay đổi nào được thực hiện đối với nhật ký hoặc tệp trạng thái logrotate.

  • -f = Yêu cầu logrotate buộc quay vòng, ngay cả khi nó không nghĩ rằng điều này là cần thiết. Đôi khi điều này hữu ích sau khi thêm các mục mới vào logrotate hoặc nếu các tệp nhật ký cũ đã được xóa bằng tay, vì các tệp mới sẽ được tạo và ghi nhật ký sẽ tiếp tục chính xác.


3
cảm ơn rất nhiều! Chỉ cần thử và nó hoạt động. Nó xuất hiện từ đầu ra mà các ký tự đại diện có thể được dự kiến ​​sẽ hoạt động như chúng làm trong vỏ.
0xC0000022L

24

Tôi chỉ muốn làm rõ, bởi vì đó là những gì tôi nhận được ở đây đang tìm cách làm,

Nhiều tệp nhật ký được phép chỉ định cho một cấu hình, ví dụ:

/var/log/httpd/access.log
/var/log/httpd/error.log
/var/log/httpd/mysite/*.log
{
    rotate 5
    mail nobody@example.org
    size 100k
    sharedscripts
    postrotate
        /usr/bin/killall -HUP httpd
    endscript
}

//, Không có vấn đề với các đường dẫn khác nhau xảy ra trên nhiều dòng?
Nathan Basan

@NathanBasan Tôi không hiểu câu hỏi của bạn đầy đủ, tôi nghĩ bạn có thể chỉ ra các đường dẫn tại các tệp ở bất cứ đâu trên đĩa bạn thích, tất cả chúng không phải nằm trong cùng một tiền tố thư mục.
ThorSummoner

@NathanBasan oh, tôi nghĩ rằng tôi hiểu, có nhiều mục tiêu xoay vòng log trên các dòng khác nhau dường như là một cách sử dụng bình thường, tôi đã sao chép biểu mẫu đó từ các tập lệnh logrotate.d khác, ví dụ /etc/logrotate.d/rsyslog
ThorSummoner

4

Từ trang man cho logrotate :

Lưu ý rằng tên tệp nhật ký có thể được đặt trong dấu ngoặc kép (và dấu ngoặc kép là bắt buộc nếu tên chứa khoảng trắng). Quy tắc trích dẫn shell thông thường được áp dụng, với các ký tự ', "và \ được hỗ trợ.

Hãy nhớ sửa đổi hoặc xóa dấu ngoặc kép khi chuyển từ mẫu đơn sang nhiều mẫu:

Những công việc này:

/var/log/*.log /var/log/*.blog {

cái này cũng hoạt động:

/var/log/*.log
/var/log/*.blog {

Điều này không hoạt động:

'/var/log/*.log /var/log/*.blog' {

và không phải điều này:

"/var/log/*.log /var/log/*.blog" {

So sánh với trường hợp mẫu đơn.

Những công việc này:

'/var/log/*.log' {

và điều này cũng hoạt động:

"/var/log/*.log" {

Đã thử nghiệm với logrotate 3.10.0


2
Sẽ rất thú vị nếu biết điều này hoạt động:"/var/space /log/*.log" "/var/log/*.blog"
KajMagnus 23/03/18
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.