Como faço para limpar entradas journalctl para uma unidade específica apenas?

15

Passei alguns dias escrevendo um script python e criando um arquivo de unidade systemd para ele. Durante o teste, o script registrou muitos erros no journald. Eu gostaria de limpar esses erros do journald agora que eu terminei.

Existem várias maneiras de limpar todo o diário, conforme descrito aqui: Como limpar o journalctl inclusive usando journalctl --vacuum-time=2d , usando journalctl --vacuum-size=500M , e temporariamente definindo SystemMaxUse= em /etc/systemd/journald.conf para um valor muito baixo.

Tudo isso parece limpar todo o diário, afetando todas as unidades. Eu só preciso limpar as entradas para uma única unidade. Isso é possível?

    
por Tal 28.03.2016 / 18:32

2 respostas

3

Use meu programa Python 3 copy_journal.py nos arquivos de diário em /var/log/journal de qual você deseja remover entradas.

Por exemplo, para fazer uma cópia de system.journal sem entradas de log para NetworkManager.service :

$ journalctl --file=system.journal | wc
    167    1934   18825
$ journalctl --file=system.journal | grep -v NetworkManager | wc
     77     881    8421
$ python3 copy_journal.py --remove-unit=NetworkManager.service system.journal system-without-nm.journal
$ journalctl --file=system-without-nm.journal | wc
     77     881    8421
    
por 10.03.2017 / 23:07
-1

Eu não acho que seja possível, porque de acordo com a página man journalctl "A saída é intercalada a partir de todos os arquivos de diário acessíveis, sejam eles rotacionados ou sendo gravados atualmente".

Você pode, no entanto, filtrá-lo por uma unidade - 'journalctl -u some.service' e, em seguida, tentar remover as entradas de log do diário com seu próprio script usando o cron.

    
por 29.03.2016 / 14:08