journalctlをクリアする方法


209

Googleでシステム化されたジャーナルをクリアする安全な方法を見つけることができませんでした。誰でも安全で信頼できる方法を知っていますか?

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

回答:


290

自己メンテナンス方法は、サイズまたは時間でログをバキュームします。

過去2日間のみ保持します。

journalctl --vacuum-time=2d

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

journalctl --vacuum-size=500M

man journalctl 詳細については。


11
すてきなコマンドですが、openSUSE 13.2(現在の安定版リリース)では動作しませんでした。カーネルお​​よびユーザーランドプログラムに関しては、Archは常に最先端であることが知られているため、最近systemdに真空オプションが追加された可能性があり、単にディストリビューションに落ちていないのではないかと推測しました。2014年12月10日のtechupdates.com/go/1002774でのLennartの発表で、このコマンドがsystemd v218に追加されたという事実を確認しました。このコメントを追加するだけで、Archに参加していない私のような誰かが同様の問題を抱えていることになります。とにかく賛成。
ジョシュアフーバー

「journalctl --f」で新しいログメッセージが表示されない状況を修正するために、「journalctl --vacuum-time = 1d」を使用しました。どうやら私のシステム時間は一時的に約1日進んでから回復し、journalctlはその将来の時刻からのログイベントのタイムスタンプをジャーナルテールとして使用していました。
user5071535

8
Ubuntu 16.04のバージョン「systemd 229」では動作しませんでした。journalctl --vacuum-size=1Kその後journalctlも1K以上の方法を示しています。ブート以降のすべてのメッセージが表示されます。
ダンダスカレスク16

18
これはアーカイブされたログのみをクリアし、アクティブなログはクリアしないようです。journalctl --flush --rotate以前に実行してみましたjournalctl --vacuum-time=1sが、まだすべてではありませんが、より多くのものを削除しました。
user60039

2
ドキュメントは私にはそれほど明確ではないようです。(あなたの例では)常に2dに設定されたままですか?または、コマンドを実行してから2日ですか?たぶん、これが正確にどのように機能するのか理解していないのかもしれません。
ジャージー豆

85

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

次の/etc/systemd/journald.confように設定できます:

SystemMaxUse=100M

11
わかりましたが、典型的でない状況もあります。私はそれらのほとんどが理由として単なる美学であることを知っていますが、美学は人間の正当な理由です;)。
ルカシュZaroda

2
@ŁukaszZarodaその場合、「安全」を定義する必要があります。通常、「デーモンが保持するように構成されているものを吹き飛ばしたい」と「安全」との互換性はありません。強制的に実行する場合は、サービスをシャットダウンし、ログファイルをゼロにします。正常に機能させるには、質問のパラメーターをより適切に定義する必要があります。「安全」とはどういう意味ですか?
カレブ14年

安全とは、クリアした後は、新しい場所から開始するだけで通常どおりに機能することを意味します。
ルカシュZaroda

5
典型的な状況ではないかもしれませんが、時にはsystemdのバグのために古いログを削除する必要があります。例えばbbs.archlinux.org/viewtopic.php?pid=1173031#p1173031
diffycat

1
特定のサイズに達したときではなく、一定期間後にログを消去するには、のMaxRetentionSec代わりにパラメーターを設定できますSystemMaxUse。詳細man journald.confを参照してください。
joelostblom

52

Michaelの答えは1つ欠けています。バキューム処理はアーカイブされたジャーナルファイルのみを削除し、アクティブなものは削除しません。すべてを削除するには、最初にファイルをローテーションして、最近のエントリが非アクティブなファイルに移動されるようにする必要があります。

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

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

(これを1つのjournalctlコマンドに結合できないことに注意してください。)

ところで、一部のディストリビューションでは、ログをディスクに書き込むようにjournaldが構成されています(/var/log/journal)一方で、他のディストリビューションではログをメモリに保持します(/run/log/journal)。場合によっては、journalctl --flushすべてを削除するために最初に使用する必要があるかもしれません。

あなたが持っていない場合は--rotate、あなたのバージョンでは、使用することができます--sinceエントリをフィルタリングするために、引数を:

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

journalctl:認識されないオプション '--rotate'
stiv

1
私は他の答えが近づいているものを手に入れていますが(長期戦略)-質問は簡単です:どのように今すぐログをクリアしますか(おそらくあなたは現在のタスクの長期に興味がありません)。これは、他の仮定を行わずにその質問に答え、journalctlを理解するために他の大きな価値を追加します。これが答えです。
マーク

1
これは私にとって唯一の有用な答えでした。ありがとう!
31分にフリード

18

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

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

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

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


4
ユースケースは実際には必要ありませんでした。ジャーナルでCoWを無効にすることのポイントは、頻繁に書き込まれることです。古いローテーションされたジャーナルファイルの場合はそうではなく、ただそこにあります。
Hjulle

1
set SystemMaxUse=1Ksystemd-journaldrestarted を実行しましたが、journalctlはまだ削除したいエントリを表示しています。フラットテキストファイルからのこの進捗はどうですか?
ダンダスカレスク16

13

私のために何もしなかったので--vacuum-time--vacuum-size私は次のことをしました:

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

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


Debian Jessieでは、パスは/run/logです。
シンクロ

1
これだけが私を助けました!
T.Todua

これは現在正しい答えです。journalctlコマンドでこれを行うことができればいいのですが、できないようです。
ケビン・リダ

11

ログ全体をきれいにする非常に強引な方法:

$ sudo journalctl --vacuum-time=1seconds

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


5
うまくいきませんでした。を実行しsystemctl restart systemd-journaldた後でも、15分前のエントリが引き続き表示されます。
ダンダスカレスク16

1
こっちも一緒。これも私にはうまくいきませんでした。CentOS7を実行しています。
ジャージー豆

5

CentOSでは--rotateと--vacuum-time = 1sの両方が機能しませんでした。このようにクリアできました:

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

に16進数の名前を持つ2つのディレクトリが見つかりました./journaljournalctlコマンドは最新のもので動作します。そのため、古いディレクトリを手動で削除する必要がありましたが、これは安全です。journal confでサイズを制限しただけです。
KeitelDOG

1
  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

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


0

私の以前の回答は、「重複」しているため削除されました。さて、前の回答で十分に明確ではなかったのは残念ですが、既存の回答とは異なりました。そこで、より詳細なバージョンを以下に示します。

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

それが役に立てば幸い。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.