Não consegui encontrar no google nenhuma maneira segura de limpar o diário systemd. Alguém conhece alguma maneira segura e confiável de fazer isso?
Digamos que eu estava experimentando alguma coisa e meus logs foram desordenados com várias mensagens de erro. Além disso, estou exibindo meu diário na área de trabalho usando o Conky. Eu realmente não quero ver esses erros, pois eles me lembram um dia terrível em que eu estava consertando essas coisas, eu quero me sentir como um homem novo depois desse horror. Acho que todos concordarão que esse é um motivo válido para limpar os logs: P.
fonte
journalctl --vacuum-size=1K
em seguida,journalctl
ainda mostra muito mais do que 1K. Ele mostra todas as mensagens desde a última inicialização.journalctl --flush --rotate
antesjournalctl --vacuum-time=1s
e ele removeu mais coisas, embora ainda não seja tudo.Normalmente você não limpa o diário sozinho. Isso é gerenciado pelo próprio systemd e os logs antigos são rotacionados à medida que novos dados são recebidos. A coisa certa a fazer seria agendar o journald para manter apenas os dados de seu interesse. A coisa mais comum a ser ajustada é o disco total espaço que é permitido ocupar. Depois de cruzar esse limite, ele começará a lançar entradas antigas para permanecer perto desse valor.
Você pode configurá-lo da seguinte
/etc/systemd/journald.conf
maneira:fonte
MaxRetentionSec
vez deSystemMaxUse
. Vejaman journald.conf
para mais detalhes.A resposta de Michael está faltando uma coisa: aspirar apenas remove os arquivos de diário arquivados, não os ativos. Para se livrar de tudo, você precisa girar os arquivos primeiro, para que as entradas recentes sejam movidas para arquivos inativos.
Portanto, a resposta completa para remover todas as entradas parece ser
(Observe que você não pode combinar isso em um
journalctl
comando.)A propósito, algumas distribuições têm o journald configurado para gravar registros no disco (
/var/log/journal
) enquanto outras mantêm registros na memória (/run/log/journal
). Espero que, em alguns casos, seja necessário usarjournalctl --flush
primeiro para remover tudo.Se você não possui
--rotate
sua versão, pode usar o--since
argumento para filtrar entradas:fonte
No Arch linux, o mais próximo que cheguei foi:
sudo systemctl restart systemd-journald
No meu sistema, cada arquivo de diário tem 8 MB, e os itens acima foram limpos, exceto 3, elevando o tamanho total para ~ 25 MB.
Meu caso de uso foi a desativação da vaca para o Btrfs (apenas para o diretório diário e subdiretórios):
sudo chattr +C /var/log/journal/*
. O problema é que o atributo é definido apenas em arquivos recém-criados, portanto, o desejo de liberar o diário.fonte
SystemMaxUse=1K
, reinicieisystemd-journald
, mas o journalctl ainda mostra as entradas que eu quero que sejam removidas. Como é esse progresso dos arquivos de texto simples?Desde
--vacuum-time
e--vacuum-size
não fez nada por mim, fiz o seguinte:Não está certo, mas funcionou.
fonte
/run/log
.Um método de força bruta para limpar todo o log:
Você também pode usar
--vacuum-size
como Michael mencionado.fonte
systemctl restart systemd-journald
.--Rotate e --vacuum-time = 1s não funcionaram para mim no CentOS. Eu era capaz de limpá-lo assim:
fonte
./journal
. Osjournalctl
comandos funcionam apenas no mais recente. Então eu tive que excluir o diretório antigo manualmente e isso é seguro. Depois de limitar o tamanho no diário conf.Faça backup caso precise, no futuro:
cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak
Limpe o arquivo:
cd /run/log/journal/<temp-string>/
>system.journal
Verifique para ver os registros mais recentes:
journalctl -xe
fonte
journalctl -b
será exibido apenas a partir da inicialização mais recente. Você também pode usar-b -1
,-b -2
etc. Seu dia horrível ainda está lá, mas você não precisará vê-lo, a menos que precise.fonte
Minha resposta anterior foi excluída por ser "duplicada". Bem, desculpe-me por não ter sido suficientemente claro na minha resposta anterior, mas era diferente das respostas existentes. Então, aqui está uma versão mais elaborada:
journalctl -m --vacuum-time=1s
fez o truque para mim. Observe a-m
bandeira , ela mescla todos os seus diários e depois os limpa. Sem a-m
bandeira, ela não limpou nada no meu caso (no CentOS-7).Espero que ajude.
fonte