journalctl mostra botas muito antigas que não são recicladas

3

O sistema tem botas muito antigas (2 e 3 anos de idade), que não são recicladas e eu não consegui as aspirar:

$ journalctl --list-boots --no-pager
-16 53baf678f0d749d6b390afea4a3ef96b Wed 2014-04-02 22:07:26 IDT—Wed 2014-04-02 22:46:08 IDT
-15 60a54132f5c8450d9b33a77819a037d1 Thu 2014-04-03 00:04:50 IDT—Thu 2014-04-03 12:30:21 IDT
-14 24b65a7e589d4479bf5020b98b8120b7 Wed 2015-04-01 03:10:01 IDT—Wed 2015-04-01 08:35:21 IDT
-13 43398d6d74c849bcb359a2d3963f4aaa Wed 2015-04-08 00:26:31 IDT—Wed 2015-04-08 00:26:31 IDT
-12 51b28f394cbb4699b2c4098297f73b2e Mon 2017-07-24 18:28:02 IDT—Mon 2017-07-24 19:08:37 IDT
-11 67467a640fb5413189f9cd518a56f668 Tue 2017-07-25 01:21:00 IDT—Mon 2017-07-24 22:54:40 IDT
-10 1370875e2f2c4b3c80c82901367b0835 Tue 2017-07-25 03:05:18 IDT—Tue 2017-07-25 01:18:51 IDT
-9 462c24a6b4cd487c834e121240bb880c Tue 2017-07-25 13:16:02 IDT—Tue 2017-07-25 18:50:32 IDT
-8 970d61bd3a6f455bb67a7a77c788b930 Wed 2017-07-26 00:01:58 IDT—Wed 2017-07-26 02:37:09 IDT
-7 dc33b354faa64c7c981da25eb9b77bde Wed 2017-07-26 12:45:04 IDT—Wed 2017-07-26 17:01:02 IDT
-6 1bb69b41c09c40aea412714b09678cf2 Wed 2017-07-26 20:01:12 IDT—Wed 2017-07-26 18:43:34 IDT
-5 9a6ed1de771d4056b8be15409dfe06f4 Wed 2017-07-26 23:18:25 IDT—Tue 2017-08-01 00:04:56 IDT
-4 e3eba22761bc470ca9bd1d9004478ad1 Tue 2017-08-01 13:12:55 IDT—Tue 2017-08-01 18:40:22 IDT
-3 02d288fc10714e0592b24ea1cbaf60e4 Tue 2017-08-01 23:00:01 IDT—Wed 2017-08-02 01:29:53 IDT
-2 3230c51e8792424aaec920fa15fa96c0 Wed 2017-08-02 12:54:43 IDT—Wed 2017-08-02 18:09:52 IDT
-1 10621f49412c43cf976ab30555e6eb36 Wed 2017-08-02 22:37:36 IDT—Wed 2017-08-02 20:22:57 IDT
0 d2e38bd2d96b4027ac14e132638561fb Wed 2017-08-02 23:23:07 IDT—Thu 2017-08-03 00:03:01 IDT

Eu tentei limpar pelo tempo:

$ sudo journalctl --vacuum-time=1years

Mas nada foi eliminado.

Eu tentei por arquivos:

$ sudo journalctl --vacuum-files=12

Deleted archived journal /var/log/journal/b78deda26d9b4740a6bc52f31d993baf/system@412dc1544fb841d4909752bffd03e810-0000000000000001-00055511dc545ff3.journal (16.0M).
Deleted archived journal /var/log/journal/b78deda26d9b4740a6bc52f31d993baf/user-1000@15238a40d91c40fabe10b0bec7f53a23-00000000000009ef-0005550f5956d667.journal (25.0M).
Deleted archived journal /var/log/journal/b78deda26d9b4740a6bc52f31d993baf/system@412dc1544fb841d4909752bffd03e810-000000000000b685-00055528569c7855.journal (16.0M).
Deleted archived journal /var/log/journal/b78deda26d9b4740a6bc52f31d993baf/user-1000@15238a40d91c40fabe10b0bec7f53a23-000000000000b5cd-0005552854d417fd.journal (25.0M).
Vacuuming done, freed 82.0M of archived journals on disk.

Ele excluiu algumas botas, mas não as que eu esperava:

$ journalctl --list-boots --no-pager
-9 53baf678f0d749d6b390afea4a3ef96b Wed 2014-04-02 22:07:26 IDT—Wed 2014-04-02 22:46:08 IDT
-8 60a54132f5c8450d9b33a77819a037d1 Thu 2014-04-03 00:04:50 IDT—Thu 2014-04-03 12:30:21 IDT
-7 24b65a7e589d4479bf5020b98b8120b7 Wed 2015-04-01 03:10:01 IDT—Wed 2015-04-01 08:35:21 IDT
-6 43398d6d74c849bcb359a2d3963f4aaa Wed 2015-04-08 00:26:31 IDT—Wed 2015-04-08 00:26:31 IDT
-5 9a6ed1de771d4056b8be15409dfe06f4 Wed 2017-07-26 23:23:00 IDT—Tue 2017-08-01 00:04:56 IDT
-4 e3eba22761bc470ca9bd1d9004478ad1 Tue 2017-08-01 13:12:55 IDT—Tue 2017-08-01 18:40:22 IDT
-3 02d288fc10714e0592b24ea1cbaf60e4 Tue 2017-08-01 23:00:01 IDT—Wed 2017-08-02 01:29:53 IDT
-2 3230c51e8792424aaec920fa15fa96c0 Wed 2017-08-02 12:54:43 IDT—Wed 2017-08-02 18:09:52 IDT
-1 10621f49412c43cf976ab30555e6eb36 Wed 2017-08-02 22:37:36 IDT—Wed 2017-08-02 20:22:57 IDT
 0 d2e38bd2d96b4027ac14e132638561fb Wed 2017-08-02 23:23:07 IDT—Thu 2017-08-03 00:09:37 IDT

Como posso me livrar dessas botas antigas de 2014 e 2015? Por que eles são preservados?

Atualizar

Como sugestão de derobert, listar o diretório retorna o seguinte:

$ ls -lt /var/log/journal/b78deda26d9b4740a6bc52f31d993baf/ | tail
-rw-r-----+ 1 root systemd-journal 26214400 Aug  2 22:44 user-1000@15238a40d91c40fabe10b0bec7f53a23-0000000000026307-000555aff155c595.journal
-rw-r-----+ 1 root systemd-journal 16777216 Aug  2 22:44 system@412dc1544fb841d4909752bffd03e810-0000000000026340-000555b006ce5e6d.journal
-rw-r-----+ 1 root systemd-journal 26214400 Aug  1 15:04 user-1000@15238a40d91c40fabe10b0bec7f53a23-000000000001d951-0005558547686519.journal
-rw-r-----+ 1 root systemd-journal  8388608 Aug  1 15:04 system@412dc1544fb841d4909752bffd03e810-000000000001d952-000555854768665a.journal
-rw-r-----+ 1 root systemd-journal 26214400 Jul 30 12:10 user-1000@15238a40d91c40fabe10b0bec7f53a23-0000000000015378-0005553e36e51b82.journal
-rw-r-----+ 1 root systemd-journal  8388608 Jul 30 12:03 system@412dc1544fb841d4909752bffd03e810-0000000000015393-0005553e40691231.journal
-rw-r-----+ 1 root systemd-journal  8388608 Apr 18  2015 user-1002.journal
-rwxr-xr-x+ 1 root systemd-journal  8388608 Apr  8  2015 user-42.journal
-rwxr-xr-x+ 1 root systemd-journal  8388608 Apr  1  2015 user-995.journal
-rwxr-xr-x+ 1 root systemd-journal  8388608 Apr  3  2014 user-1001.journal
    
por dchrome 02.08.2017 / 23:33

1 resposta

7

Os novos logs binários nos sistemas operacionais Linux não funcionam da mesma forma que os logs binários antigos.

Os logs binários antigos eram /var/log/wtmp e /var/log/btmp . Na inicialização do sistema, uma entrada seria gravada em wtmp com o nome de usuário reboot e, no encerramento, uma entrada seria gravada em wtmp com o nome de usuário shutdown . Encontrar as horas em que o sistema foi reinicializado foi uma questão de usar os comandos last reboot e last shutdown para imprimir essas entradas.

Os novos logs binários são o diário do systemd, e eles não possuem tais entradas.

Em vez disso, cada registro de diário tem um campo chamado código de inicialização . Você pode ver isso com a opção -o verbose para journalctl . Uma ID de boot é gerada pelo kernel no bootstrap, e systemd-journald aplica o ID de boot atual, retirado do kernel, para cada registro de log à medida que o adiciona ao diário.

Para implementar a funcionalidade list-boots , journalctl varre o diário inteiro , lendo os timestamps e os IDs de inicialização de todos os registros e anotando o mais antigo e os mais recentes timestamps associados a cada ID de inicialização exclusivo.

Existem no entradas de log de inicialização explícitas para vácuo, como era o caso com os logs binários antigos. Em vez disso, você precisa se livrar das entradas all estampadas com os IDs de inicialização que você não deseja mais ver.

Seu problema é que, como você é um usuário privilegiado, todo o diário também inclui os diários por usuário : os arquivos user-1001.journal e user-42.journal que você pode ver na sua listagem de diretórios. E como você também pode ver, você tem diários por usuário para alguns usuários que não foram tocados desde 2014 e 2015. Essas são as entradas de diário que têm esses IDs de inicialização antigos.

Como diz o manual, "aspirar" só funciona em arquivos de diário arquivados, não nos arquivos atualmente ativos. Mas como você pode ver ainda mais esses vários diários por usuário datados de 2014 e 2015 são os arquivos ainda ativos atualmente para esses usuários. Ironicamente, eles nunca cresceram o suficiente para serem arquivados.

Você tem duas opções:

  • Use a opção --system para restringir journalctl --list-boots apenas aos arquivos do sistema e não ler os arquivos por usuário.
  • Use journalctl --rotate para forçar os diários por usuário a serem arquivados (assim como o diário do sistema - caverna!), para que eles sejam "disponíveis para vácuo". Se o seu journalctl não tiver isso, você deverá enviar um sinal para o processo systemd-journald , conforme descrito em sua página de manual.

É claro que, antes de fazer isso, você pode querer investigar por que sua conta de usuário gdm tem um diário por usuário, e qual ID de usuário 995 estava fazendo no Dia da mentira de 2015. ☺

Você também pode querer ver os resultados de journalctl -n 20 _BOOT_ID=53baf678f0d749d6b390afea4a3ef96b e journalctl --reverse -n 20 _BOOT_ID=53baf678f0d749d6b390afea4a3ef96b e seus equivalentes para os outros IDs de inicialização.

    
por 03.08.2017 / 02:50