Làm sạch các tệp nhật ký trong linux


10

Tôi đang sử dụng máy ảo kvm ub Ubuntu 10.04 để kiểm tra một số tính năng của mô-đun hạt nhân. Tôi grep qua các /var/logtập tin để quan sát các thông điệp kernel về mô-đun đó.

Để bắt đầu từ trạng thái sạch, tôi xóa các tệp nhật ký chứa các tin nhắn cũ hơn bằng cách thực thi rm -rf /var/log/*và sau đó khởi động lại máy ảo. Tuy nhiên, sau khi tôi khởi động lại, các tệp nhật ký mới vẫn chứa các thông điệp nhật ký cũ đó. Phải mất khoảng 5-6 chu kỳ xóa tệp và khởi động lại máy ảo để cuối cùng thoát khỏi các thông điệp tệp nhật ký đó.

Tại sao chuyện này đang xảy ra? Có cách nào dễ dàng hơn để dọn dẹp các tệp nhật ký?


logrotatelà phần mềm linux chính thức về xóa và xoay nhật ký tự động.
Hanan N.

Tôi không muốn xoay. Chỉ cần lau chúng đi.
chiêm ngưỡng

1
Theo dõi có vẻ hiệu quả với tôi: 1. rm -rf / var / log / * 2. dmesg -c 3. restart Vì điều này hoạt động, tôi nghĩ rằng kernel đọc các thông điệp tường trình trước đó trong khi khởi động, giữ chúng trong bộ đệm và viết chúng để tập tin một lần nữa trong khi khởi động lại. Nếu ai biết thêm về cơ chế thực tế xin vui lòng cập nhật.
chiêm ngưỡng

Câu trả lời:


7

Cách dễ nhất để làm sạch các bản ghi cũ là không loại bỏ chúng.

Cách tốt nhất để dọn dẹp các bản ghi là logrotateHanan N. đã chỉ ra hoặc:

find /var/log -type f -exec /bin/cp /dev/null {} \;

cho mỗi tệp nhật ký. Tôi không chắc chắn chính xác những mục nhật ký mà bạn đang đề cập đến từ lần khởi động trước nhưng nếu bạn muốn xóa phần này sau khi khởi động, bạn có thể đặt lệnh ở trên vào /etc/rc.localtập lệnh để tất cả việc ghi nhật ký là sau khi khởi động.

Thông thường mặc dù bạn không muốn xóa nhật ký vì chúng là điểm khởi đầu của bạn trong tất cả các khắc phục sự cố.


Tôi nghĩ rằng lệnh 'cp' sẽ sao chép tất cả các bản ghi qua tên tệp được mở rộng cuối cùng ... có lẽ ý bạn là : find /var/log/* -exec cp /dev/null {} \;?
jjmontes

@jjmontes Cảm ơn bạn. Tôi không thể đưa ra lệnh find vào thời điểm đó. :) Nhưng nó thực sự sẽ được thay đổi theo cách tôi chỉnh sửa
Karlson

3

Đối với những gì bạn đang làm, có thể tốt hơn để thêm một tệp nhật ký bổ sung cho các thông điệp kernel. Một số trình tiện ích nhật ký sẽ cho phép bạn thực hiện các kết quả khớp trên các bản ghi được ghi, do đó bạn chỉ nhận được các bản ghi thích hợp trong tệp của mình. Sau đó, bạn có thể xoay, xóa hoặc đổi tên các tệp giữa các lần chạy. (Nếu bạn không khởi động lại, bạn có thể cần gửi tín hiệu HUP đến trình nền nhật ký để nhận lại để mở lại các tệp của nó.

Ngoài ra còn có các công cụ sẽ chỉ trích xuất các bản ghi mới từ nhật ký. Các logtailtiện ích từ logcheckgói là một tiện ích như vậy. Nó có thể được chạy với một tập tin bù thay thế.

Có các công cụ khác xem nhật ký cho các bản ghi khớp với một mẫu và báo cáo chúng. Một trong số này có thể làm việc tốt cho bạn.


1

Điều này dường như hoạt động tốt (trên Ubuntu LTS 14.04) bằng cách xoay nhật ký của bạn ra một nhật ký sạch và sau đó xóa các mục nhật ký cũ hơn. Nó tương tự như phương thức cp / dev / null, nhưng tôi nghĩ nó sạch hơn. ymmv

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
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.