“É necessário reiniciar o sistema”… por quê? Como posso obter o que acionou esta notificação para também mostrar detalhes?

26

De vez em quando, vou colocar um SSH em uma caixa com atualizações autônomas e ser recebido com "** É necessário reiniciar o sistema ***" sem informações adicionais.

Meu arquivo '/var/run/reboot-required.pkgs' contém:

linux-image-3.13.0-61-generic
linux-base
linux-base
linux-base

Não me importo de reiniciar, mas não gosto de reiniciar sem ter detalhes de POR QUE devo reiniciar em primeiro lugar. Acima, vejo dois pacotes acionando a mensagem, mas não há explicação além disso.

Existe uma maneira de obter detalhes adicionais sobre o motivo da reinicialização também aparecer no login SSH?

Idealmente, eu gostaria de extrair um arquivo que contenha algo legível por humanos, "O pacote xyz foi atualizado em [data / hora]. Ele precisava modificar os arquivos a, bec, mas não podia porque o sistema bloqueava / faria bloqueie a ação. Durante a próxima reinicialização, os arquivos a, bec serão substituídos. " Mas algo que não é completamente legível por humanos provavelmente também está bem.

E. Diaz
fonte
OMI parece óbvio: o kernel foi atualizado e não pode se substituir ao vivo (pelo menos ainda não).
Muru
6
É claro que é óbvio para você, mas apenas porque fui procurar e procurei tudo para poder demonstrar o que quero. NÃO é óbvio assim que eu SSH na caixa. Mostrar a lista de pacotes que requer uma reinicialização também é insuficiente. Quero saber em que data e hora esse pacote foi atualizado e um motivo legível por humanos que explica por que o pacote deseja a reinicialização. Se sua torradeira quiser reiniciar, você saberá o porquê. Então, por que não exigir tanto, se não mais, de um sistema operacional altamente complexo?
E. Diaz
Porque sou idiota? Sinta-se livre para editar se você acha que a pergunta precisa de esclarecimentos.
13339 E. Diaz

Respostas:

24

Edit: Outra, provavelmente relevante ou útil artigo .

Como você já descobriu, pode encontrar os pacotes que requerem reinicialização no /var/run/reboot-required.pkgs

Agora você só precisa procurar no changelog do pacote para encontrar as informações que está procurando.

  • Se você já está na máquina, pode encontrar os registros de alterações em /usr/share/doc/${package_name}(exemplo :) zless /usr/share/doc/linux-image-3.13.0-61-generic/changelog.Debian.gz.
  • O Debian fornece algumas ferramentas apt-listchangespara tornar isso mais conveniente ( 1 , 2 , 3 ).
  • Outra maneira de fazer isso seria usar packages.ubuntu.com .

    No seu caso:

    imagem mostrando onde encontrar o link para o changelog em packages.ubuntu.com

LiveWireBT
fonte
5

O arquivo finalmente chamado é /usr/lib/update-notifier/update-motd-reboot-required(é chamado por /etc/update-motd.d/98-reboot-required).

Dentro da instrução condicional if de um desses arquivos, basta adicionar isto:

    echo "Packages causing reboot:"
    cat /var/run/reboot-required.pkgs

Então, por exemplo, seu /usr/lib/update-notifier/update-motd-reboot-requiredarquivo ficaria assim:

#!/bin/sh -e
#
# helper for update-motd

if [ -f /var/run/reboot-required ]; then
        cat /var/run/reboot-required
        echo "Packages causing reboot:"
        cat /var/run/reboot-required.pkgs
fi
Berto
fonte