How to clear journalctl
The self maintenance method is to vacuum the logs by size or time.
Retain only the past two days:
journalctl --vacuum-time=2d
Retain only the past 500 MB:
journalctl --vacuum-size=500M
man journalctl
for more information.
You don't typically clear the journal yourself. That is managed by systemd itself and old logs are rotated out as new data comes in. The correct thing to do would be to schedule journald to only keep as much data as you are interested in. The most usual thing to adjust is the total disk space it is allowed to take up. Once it crosses this boundry it will start pitching old entries to stay near this value.
You can set this in /etc/systemd/journald.conf
like so:
SystemMaxUse=100M
Michael's answer is missing one thing: vacuuming only removes archived journal files, not active ones. To get rid of everything, you need to rotate the files first so that recent entries are moved to inactive files.
So, the complete answer to remove all entries seems to be
journalctl --rotate
journalctl --vacuum-time=1s
(Note that you cannot combine this into one journalctl
command.)
By the way, some distributions have journald configured so that it writes logs to disk (/var/log/journal
) while others keep logs in memory (/run/log/journal
). I expect that in some cases it may be necessary to use journalctl --flush
first to get everything removed.
If you don't have --rotate
in your version, you can use the --since
argument to filter entries:
--since "2019-01-30 14:00:00"
--since today