Source
1) The self maintenance method is to vacuum the logs by size or time.
Retain only the past two days:
2) 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.
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.2) 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
By the way, some distributions have journald configured so that it writes logs to disk (
If you don't have
/etc/systemd/journald.conf
like so:SystemMaxUse=100M
So, the complete answer to remove all entries seems to be3)
To get rid of everything, you need to rotate the files first so that recent entries are moved to inactive files.
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