Làm thế nào để xóa tạp chí


209

Tôi không thể tìm thấy trong google bất kỳ cách an toàn nào để xóa tạp chí systemd. Có ai biết bất kỳ cách an toàn và đáng tin cậy để làm như vậy?

Giả sử tôi đang thử nghiệm một cái gì đó và nhật ký của tôi bị lộn xộn với các thông báo lỗi khác nhau. Ngoài ra, tôi đang hiển thị tạp chí của mình trên máy tính để bàn bằng cách sử dụng Conky. Tôi thực sự không muốn nhìn thấy những lỗi đó khi chúng nhắc nhở tôi một ngày khủng khiếp tôi đang sửa chữa những thứ này, tôi muốn cảm thấy như một người đàn ông mới sau nỗi kinh hoàng này. Tôi nghĩ mọi người sẽ đồng ý rằng đây là một lý do hợp lệ để xóa nhật ký: P.

Câu trả lời:


290

Phương pháp tự bảo trì là hút bụi các bản ghi theo kích thước hoặc thời gian.

Chỉ giữ lại hai ngày qua:

journalctl --vacuum-time=2d

Chỉ giữ lại 500 MB trước đây:

journalctl --vacuum-size=500M

man journalctl để biết thêm thông tin.


11
Lệnh hay, nhưng không hoạt động với tôi trên openSUSE 13.2 (bản phát hành ổn định hiện tại). Người ta biết rằng Arch thường vượt trội khi nói đến các chương trình kernel và userland, vì vậy tôi đã suy đoán rằng các tùy chọn chân không có thể đã được thêm vào systemd và đơn giản là không bị kết tủa trong bản phân phối của tôi. Xác nhận thực tế ở đây trong thông báo của Lennart vào ngày 10 tháng 12 năm 2014 techupdates.com/go/1002774 rằng lệnh này đã được thêm vào trong systemd v218. Chỉ cần thêm nhận xét này sẽ khiến bất kỳ ai khác như tôi không có mặt trên Arch cũng gặp vấn đề tương tự. Nâng cao nào.
Joshua Huber

Tôi chỉ sử dụng 'Tạp chí - vacuum-time = 1d' để khắc phục tình trạng thông báo nhật ký mới không hiển thị với 'tạp chí -f'. Rõ ràng thời gian hệ thống của tôi đã tạm thời tăng vọt khoảng một ngày trong một thời gian, sau đó phục hồi và tạp chí đang sử dụng dấu thời gian của sự kiện nhật ký từ thời điểm tương lai đó làm đuôi tạp chí.
dùng5071535

8
Không hoạt động trong phiên bản "systemd 229" trên Ubuntu 16.04. journalctl --vacuum-size=1Ksau đó journalctlvẫn hiển thị cách hơn 1K. Nó hiển thị tất cả các tin nhắn kể từ lần khởi động cuối cùng.
Dan Dascalescu

18
Có vẻ như điều này chỉ xóa các bản ghi lưu trữ, không hoạt động. Tôi đã thử chạy journalctl --flush --rotatetrước đó journalctl --vacuum-time=1svà nó đã loại bỏ nhiều thứ hơn, mặc dù vẫn không phải là tất cả.
dùng60039

2
Các tài liệu dường như không rõ ràng với tôi. Nó luôn luôn được đặt thành 2d (trong ví dụ của bạn)? Hoặc là 2d kể từ khi bạn chạy lệnh? Có lẽ tôi không hiểu làm thế nào điều này hoạt động chính xác.
áo đậu

85

Bạn thường không xóa tạp chí. Điều đó được quản lý bởi chính systemd và các bản ghi cũ được chuyển ra khi có dữ liệu mới. Điều đúng đắn cần làm là lên lịch cho tạp chí để giữ nhiều dữ liệu như bạn quan tâm. Điều thông thường nhất để điều chỉnh là tổng số đĩa không gian nó được phép đưa lên. Một khi nó vượt qua giới hạn này, nó sẽ bắt đầu ném các mục cũ để ở gần giá trị này.

Bạn có thể thiết lập /etc/systemd/journald.confnhư vậy:

SystemMaxUse=100M

11
Ok, nhưng cũng có những tình huống không điển hình. Tôi biết rằng hầu hết trong số họ chỉ là thẩm mỹ như một lý do, nhưng thẩm mỹ là một lý do hợp lệ cho con người;).
Łukasz Zaroda

2
@ UkaszZaroda Trong trường hợp đó bạn sẽ phải định nghĩa "an toàn". Thông thường "Tôi muốn thổi bay thứ gì đó mà daemon được cấu hình để giữ" không tương thích với "an toàn". Nếu bạn muốn buộc nó chỉ cần tắt dịch vụ và xóa các tệp nhật ký. Nếu bạn muốn nó hoạt động bình thường, bạn nên xác định các tham số trong câu hỏi của bạn tốt hơn. "An toàn" nghĩa là gì?
Caleb

Để an toàn, tôi có nghĩa là sau khi xóa nó sẽ hoạt động như bình thường, chỉ bắt đầu từ nơi mới.
Łukasz Zaroda

5
Nó có thể không phải là tình huống điển hình nhưng đôi khi cần phải xóa các bản ghi cũ do một số lỗi của systemd, ví dụ: bbs.archlinux.org/viewtopic.php?pid=1173031#p1173031
diffycat

1
Để làm sạch nhật ký sau một khoảng thời gian thay vì khi chúng đạt đến một kích thước nhất định, bạn có thể đặt tham số MaxRetentionSecthay vì SystemMaxUse. Xem man journald.confđể biết thêm chi tiết.
joelostblom

52

Câu trả lời của Michael thiếu một điều: hút bụi chỉ xóa các tệp nhật ký lưu trữ, không phải các tệp đang hoạt động. Để loại bỏ mọi thứ, bạn cần xoay các tệp trước để các mục gần đây được chuyển sang các tệp không hoạt động.

Vì vậy, câu trả lời đầy đủ để loại bỏ tất cả các mục dường như là

journalctl --rotate
journalctl --vacuum-time=1s

(Lưu ý rằng bạn không thể kết hợp điều này thành một journalctllệnh.)

Nhân tiện, một số bản phân phối đã được cấu hình journald để nó ghi nhật ký vào đĩa ( /var/log/journal) trong khi các bản phân phối khác giữ nhật ký trong bộ nhớ ( /run/log/journal). Tôi hy vọng rằng trong một số trường hợp có thể cần phải sử dụng journalctl --flushtrước để xóa mọi thứ.

Nếu bạn không có --rotatetrong phiên bản của mình, bạn có thể sử dụng --sinceđối số để lọc các mục:

--since "2019-01-30 14:00:00"
--since today

Tạp chí: tùy chọn không được công nhận '--rotate'
stiv

1
trong khi tôi nhận được những gì các câu trả lời khác đang tiếp cận (chiến lược dài hạn) - câu hỏi rất đơn giản: làm thế nào để bạn xóa nhật ký ngay bây giờ (có thể bạn không quan tâm lâu dài cho nhiệm vụ hiện tại của mình). Điều này trả lời câu hỏi đó mà không đưa ra các giả định khác và thêm giá trị lớn khác để hiểu tạp chí. Đây nên là câu trả lời.
Marc

1
Đây là câu trả lời hữu ích duy nhất cho tôi. Cảm ơn!
Freedo

18

Trên Arch linux, cái gần nhất tôi nhận được là:

  • Chỉnh sửa /etc/systemd/journald.conf để đặt SystemMaxUse = 1M
  • Khởi động lại tạp chí: sudo systemctl restart systemd-journald
  • Đặt lại SystemMaxUse = 200M
  • Khởi động lại tạp chí

Trên hệ thống của tôi, mỗi tệp nhật ký là 8 MB và ở trên đã xóa tất cả trừ 3, nâng tổng kích thước lên ~ 25MB.

Trường hợp sử dụng của tôi là vô hiệu hóa CoW cho BTRFS (chỉ dành cho thư mục tạp chí và thư mục con) : sudo chattr +C /var/log/journal/*. Vấn đề là, thuộc tính chỉ được đặt trên các tệp mới được tạo, do đó mong muốn xóa nhật ký.


4
Trường hợp sử dụng của bạn là thực sự không cần thiết. Điểm vô hiệu hóa CoW trên tạp chí là nó thường được viết cho. Đó không phải là trường hợp của các tập tin tạp chí cũ, họ chỉ ngồi đó.
Hjulle

1
Tôi đã thiết lập SystemMaxUse=1K, khởi động lại systemd-journald, nhưng tạp chí vẫn hiển thị các mục tôi muốn đi. Làm thế nào là tiến trình này từ các tập tin văn bản phẳng?
Dan Dascalescu

13

--vacuum-time--vacuum-sizekhông làm gì cho tôi nên tôi đã làm như sau:

$ sudo find /var/log/journal -name "*.journal" | xargs sudo rm 
$ sudo systemctl restart systemd-journald

Điều đó không đúng, nhưng nó đã làm việc.


Trên Debian Jessie, đường dẫn là /run/log.
Synchro

1
chỉ điều này đã giúp tôi!
T.Todua

Đây là câu trả lời hiện tại chính xác. Sẽ thật tuyệt nếu lệnh tạp chí có thể làm điều này nhưng dường như không thể.
Kevin Lyda

11

Một phương pháp rất mạnh mẽ để làm sạch toàn bộ nhật ký:

$ sudo journalctl --vacuum-time=1seconds

Bạn cũng có thể sử dụng --vacuum-sizenhư Michael mentoined.


5
Không hoạt động. Các mục trong 15 phút trước vẫn hiển thị, ngay cả sau khi chạy systemctl restart systemd-journald.
Dan Dascalescu

1
Tương tự ở đây. Điều này cũng không làm việc cho tôi. Tôi đang chạy CentOS7.
áo đậu

5

Cả --rotate và --vacuum-time = 1s đều không hoạt động với tôi trên CentOS. Tôi đã có thể xóa nó như thế này:

sudo rm -rf /run/log/journal/*

Tôi tìm thấy 2 thư mục có tên thập lục phân trong ./journal. Các journalctllệnh chỉ hoạt động trong một gần đây nhất. Vì vậy, tôi đã phải xóa thư mục cũ bằng tay và điều đó là an toàn. Sau khi tôi chỉ giới hạn kích thước trong tạp chí conf.
KeitelDOG

1
  1. Sao lưu trong trường hợp nếu bạn cần nó trong tương lai:
    cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak

  2. Xóa tập tin:
    cd /run/log/journal/<temp-string>/ >system.journal

  3. Kiểm tra để xem nhật ký mới nhất:
    journalctl -xe


1

journalctl -bsẽ chỉ hiển thị từ lần khởi động gần đây nhất. Bạn cũng có thể sử dụng -b -1, -b -2v.v. Ngày khủng khiếp của bạn vẫn còn nhưng bạn sẽ không phải xem nó, trừ khi bạn cần.


0

Câu trả lời trước của tôi vừa bị xóa vì bị "trùng lặp". Vâng, xin lỗi vì không đủ rõ ràng trong câu trả lời trước của tôi, nhưng nó khác với câu trả lời hiện có. Vì vậy, đây là một phiên bản phức tạp hơn:

journalctl -m --vacuum-time=1sđã lừa tôi Xin vui lòng thông báo -mcờ , nó hợp nhất tất cả các tạp chí của bạn và sau đó làm sạch chúng. Không có -mcờ, nó không dọn sạch bất cứ thứ gì trong trường hợp của tôi (trên CentOS-7).

Hy vọng nó giúp.

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.