Como limpar o journalctl

158

Não encontrei no google nenhuma maneira segura de limpar o diário do systemd. Alguém conhece alguma maneira segura e confiável de fazer isso?

Digamos que eu estivesse experimentando algo e meus logs ficaram cheios de várias mensagens de erro. Além disso, estou exibindo meu diário na minha área de trabalho usando o Conky. Eu realmente não quero ver esses erros, pois eles me lembram um dia horrível que eu estava consertando essas coisas, eu quero me sentir como um homem novo depois desse horror. Eu acho que todo mundo vai concordar que esta é uma razão válida para limpar os logs: P.

    
por Łukasz Zaroda 27.06.2014 / 13:43

8 respostas

208

O método de auto-manutenção é aspirar os registros por tamanho ou tempo.

Guarde apenas os últimos dois dias:

journalctl --vacuum-time=2d

Reter apenas os últimos 500 MB:

journalctl --vacuum-size=500M

man journalctl para mais informações.

    
por 02.04.2015 / 18:43
53

Você não costuma limpar o diário por conta própria. Isso é gerenciado pelo próprio systemd e logs antigos são rotacionados à medida que novos dados chegam. A coisa correta a fazer seria agendar o journald para manter apenas tantos dados quanto você estiver interessado. O mais usual para ajustar é o total de disco. espaço que é permitido ocupar. Depois de cruzar esse limite, ele começará a lançar entradas antigas para ficar perto desse valor.

Você pode definir isso em /etc/systemd/journald.conf da seguinte forma:

SystemMaxUse=100M
    
por 27.06.2014 / 13:52
12

No Arch linux, o mais próximo que consegui foi:

  • Edite /etc/systemd/journald.conf para definir SystemMaxUse = 1M
  • Reiniciando o diário: sudo systemctl restart systemd-journald
  • Redefinindo SystemMaxUse = 200M
  • Reiniciando novamente o diário

No meu sistema, cada arquivo de diário é de 8MB, e o acima desmarcado, exceto 3, elevando o tamanho total para ~ 25MB.

Meu caso de uso estava desativando o CoW para BTRFS (apenas para o diretório de 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.

    
por 12.02.2015 / 00:53
10

Um método de força muito bruta para limpar todo o log:

$ sudo journalctl --vacuum-time=1seconds

Você também pode usar --vacuum-size como Michaelinado.

    
por 06.07.2015 / 20:18
9

A resposta de Michael está faltando uma coisa: limpar apenas remove 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.

Assim, a resposta completa para remover todas entradas parece ser

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

(Observe que você não pode combinar isso em um comando journalctl ).

A propósito, algumas distribuições possuem o journald configurado para gravar logs em disco ( /var/log/journal ) enquanto outros mantêm logs na memória ( /run/log/journal ). Espero que, em alguns casos, possa ser necessário usar journalctl --flush primeiro para remover tudo.

    
por 23.07.2018 / 11:48
8

Como --vacuum-time e --vacuum-size não fizeram nada por mim, fiz o seguinte:

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

Não está certo, mas funcionou.

    
por 30.12.2016 / 23:08
0

journal-ctl -b-0 será exibido somente a partir da inicialização mais recente. Você também pode usar -1, -2 etc. Seu dia horrendo ainda está lá, mas você não terá que vê-lo, a menos que você precise.

    
por 01.06.2015 / 13:11
0

Ambos --rotate e --vacuum-time = 1s não funcionaram para mim no CentOS. Consegui esclarecer assim:

sudo rm -rf /run/log/journal/*
    
por 07.10.2018 / 14:30