Como sei se devo reiniciar após atualizar os pacotes no Ubuntu?

3

Eu tenho um PC executando o servidor Ubuntu.

Às vezes, quando eu ssh para ele, recebo uma mensagem que alguns pacotes precisam de atualização.

Eu atualizo o software executando (como root)

aptitude update && aptitude safe-upgrade

Às vezes isso é suficiente. Mas às vezes eu preciso reiniciar também, e não me disseram isso até que eu ssh subseqüentemente. Como posso descobrir mais cedo?

Idealmente, gostaria de atualizar executando algo como

aptitude update && aptitude safe-upgrade &&
if aptitude needs-reboot ; then shutdown -r now ; fi

mas o comando aptitude needs-reboot não existe. O que devo correr em vez disso?

Esclarecimentos:

  • Na verdade eu tenho dois PCs, um rodando 10.04 (lúcido) e o outro rodando 11.04 (natty). Eu espero que seja a mesma solução para ambos.
  • Soluções de linha de comando apenas por favor. Um desses PCs não tem tela e nenhum deles tem teclado.
por dave4420 29.07.2011 / 19:12

3 respostas

5

Um sub-par caminho --- talvez específico para o Ubuntu --- é verificar a existência deste arquivo:

/var/run/reboot-required

Se existir, uma reinicialização é necessária.

Assim, uma função Bash em .bash_rc (e co.) poderia fazer o trabalho:

function needs_reboot {
  if [ -f /var/run/reboot-required ]; then
    read -p "Restart needed. Reboot? (y/N) " answer;
    if [ "$answer" = "y" -o "$answer" = "Y" ]; then
      reboot;
    fi
  else
    echo "No restart";
  fi
}

De onde vem essa ideia? O MOTD é atualizado no momento do login pelo processo pam_motd , lendo seu conteúdo no diretório /etc/update-motd.d . Neste diretório, há um script /etc/update-motd.d/98-reboot-required (no Ubuntu 12_04) que verifica a existência de nosso /var/run/reboot-required . É aparentemente como um conselho de reinicialização é decidido. Então, a função acima apenas faz a mesma verificação, de forma interativa.

Eu realmente gostaria de obter isso diretamente do APT, mas por enquanto isso funciona ...

    
por 16.12.2014 / 02:22
1

Que tal isso (executado como root): apt-get update && apt-get dist-upgrade --dry-run | grep linux-; if [ $? -eq 0 ]; then yes | apt-get dist-upgrade && reboot; else yes | apt-get dist-upgrade; fi

Se houver uma atualização do kernel, grep linux- retornará 0 e, em seguida, você reinicializará. O comando yes pode ser substituído por apt-get dist-upgrade --assume-yes . Não haverá reinicialização se nenhuma atualização do kernel for encontrada.

    
por 02.08.2011 / 06:05
0

Você só precisa reiniciar se o kernel for atualizado.

    
por 29.07.2011 / 19:24