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 restringirjournalctl --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 seujournalctl
não tiver isso, você deverá enviar um sinal para o processosystemd-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.