web-dev-qa-db-ja.com

journalctlをクリアする方法

Systemdジャーナルをクリアする安全な方法をGoogleで見つけることができませんでした。安全で信頼できる方法を知っている人はいますか?

私が何かを実験していて、ログがさまざまなエラーメッセージでいっぱいになったとしましょう。さらに、Conkyを使用してデスクトップにジャーナルを表示しています。私はこれらのエラーを見たくありません。私がこの問題を修正していたひどい日を思い出させてくれるので、私はこの恐怖の後に新鮮な男のように感じたいです。これがログをクリアする正当な理由であることに誰もが同意すると思います:P。

262
Łukasz Zaroda

セルフメンテナンスの方法は、ログをサイズまたは時間で掃除することです。

過去2日間のみ保持する:

journalctl --vacuum-time=2d

過去500 MBのみを保持します。

journalctl --vacuum-size=500M

man journalctl 詳細については。

345
Michael

通常、自分でジャーナルをクリアすることはありません。これはsystemd自体によって管理され、新しいデータが入ってくると古いログがローテーションされます。ジャーナルをスケジュールして、関心のあるデータだけを保持するようにしてください。調整する最も一般的なことは、ディスク全体です。占有できるスペース。この境界を越えると、この値の近くに留まるように古いエントリがピッチングされます。

これは /etc/systemd/journald.conf のように:

SystemMaxUse=100M
100
Caleb

Michael's answer 不足していることが1つあります。掃除機をかけると、アーカイブされたジャーナルファイルのみが削除され、アクティブなジャーナルファイルは削除されません。すべてを取り除くには、最初にファイルをローテーションして、最近のエントリが非アクティブなファイルに移動されるようにする必要があります。

したがって、allエントリを削除する完全な答えは、

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

(これを1つのjournalctlコマンドに結合することはできません。)

ちなみに、ディストリビューションによっては、ログをディスク(/var/log/journal)に書き込むように構成されているディストリビューションもあれば、メモリにログを保持するディストリビューション(/run/log/journal)もあります。すべてを削除するには、最初にjournalctl --flushを使用する必要がある場合があると思います。

バージョンに--rotateがない場合は、--since引数を使用してエントリをフィルタリングできます。

--since "2019-01-30 14:00:00"
--since today
73
Jan Warchoł

Arch Linuxで私が得た最も近いものは:

  • /etc/systemd/journald.confを編集してSystemMaxUse = 1Mを設定します
  • ジャーナルを再開しています:Sudo systemctl restart systemd-journald
  • SystemMaxUse = 200Mのリセット
  • ジャーナルを再開する

私のシステムでは、各ジャーナルファイルは8MBで、上記は3つを除くすべてをクリアし、合計サイズは〜25MBになりました。

私のユースケースでは、BTRFSのCoWを無効にしていました(ジャーナルディレクトリとサブディレクトリのみ):Sudo chattr +C /var/log/journal/*。問題は、属性が新しく作成されたファイルにのみ設定されるため、ジャーナルをフラッシュしたいということです。

20
helmingstay

--vacuum-timeおよび--vacuum-size何もしませんでした。次のことを行いました。

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

それは正しくありませんが、うまくいきました。

14
Matt

ログ全体をクリーンアップする非常にブルートフォースの方法:

$ Sudo journalctl --vacuum-time=1seconds

マイケルのメントーとして--vacuum-sizeを使用することもできます。

11
Lanti

CentOSでは--rotateと--vacuum-time = 1sはどちらも機能しませんでした。私はこのようにそれをクリアすることができました:

Sudo rm -rf /run/log/journal/*
5
stiv

私の以前の答えは「複製」されたために削除されました。さて、私の前の答えでは十分に明確ではなかったのは残念ですが、それは既存の答えとは異なりました。だからここにもっと複雑なバージョンがあります:

journalctl -m --vacuum-time=1sは私のためにトリックをしました。 -mフラグに注意してください、すべてのジャーナルがマージされ、クリーンアップされます。 -mフラグがないと、私の場合(CentOS-7の場合)は何もクリーンアップされませんでした。

それが役に立てば幸い。

2
fengye87

journalctl -bは、最新のブートからのみ表示されます。 -b -1-b -2などを使用することもできます。恐ろしい日はまだそこにありますが、必要がない限り、表示する必要はありません。

2
David

またSudo journalctl --vacuum-files 1

1
marcio
  1. 今後必要になる場合に備えて、バックアップしてください。
    cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak

  2. ファイルをクリアします。
    cd /run/log/journal/<temp-string>/>system.journal

  3. 最新のログを確認してください:
    journalctl -xe

1
Girish KG