Como o Ubuntu monitora o sinalizador "Reinicialização do sistema necessária" no motd?

78

Eu tenho alguns servidores Ubuntu (8.10, 9.10) configurados para instalar automaticamente as atualizações de segurança. Algumas vezes, essas atualizações exigem uma reinicialização do sistema, e essa sequência é mostrada em motd:

*** System restart required ***

Para receber um aviso sobre isso, planejo escrever um teste do Nagios para monitorar se o servidor precisa de uma reinicialização. Então, minha pergunta:

Existe uma maneira melhor do que analisar /etc/motdpara descobrir se uma reinicialização é necessária?

Anders Lindahl
fonte

Respostas:

95

Verifique a presença de /var/run/reboot-required.

Dan Carley
fonte
17
Nota: para sistemas debian, /var/run/reboot-requirednão é criado, a menos que o update-notifier-commonpacote esteja instalado.
Peter V. Mørch 27/01/12
7
Note que update-notifier-commonfoi removido no Debian Jessie. unattended-upgradesagora inclui um script simples /etc/kernel/postinst.d/unattended-upgradesque touches o arquivo. reboot-notifieré outro pequeno pacote que é compatível com o formato de update-notifier-common.
ypid 21/01
Você também pode verificar seus processos em execução para ver se uma reinicialização já foi iniciada. Por exemplo, atualizações autônomas têm a opção de especificar um horário para a reinicialização; até esse momento, o método acima continuará indicando que é necessária uma reinicialização, mesmo que uma já tenha sido iniciada.
DylanYoung
37

O script que gera a parte necessária para reinicialização do motd é / usr / lib / update-notifier / update-motd-reboot-required, que contém:

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

if [ -f /var/run/reboot-required ]; then
        cat /var/run/reboot-required
fi

Sua verificação do nagios pode verificar a existência de / var / run / reboot-required.

Richard Holloway
fonte
2
+1 para mostrar em qual arquivo ele está localizado #
Wayne
esse script shell não está gerando nada. Ele exibe o conteúdo, se existir
Scott #
27

Além disso, o arquivo '/var/run/reboot-required.pkgs' lista os pacotes que solicitaram a reinicialização. Por exemplo:

$ cat /var/run/reboot-required.pkgs 
linux-image-2.6.32-28-generic
dbus
$

No Ubuntu Lucid (10.4).

Daniel
fonte
Muito obrigado, oh meu Deus, eu senti muita falta disso!
Lapshin Dmitry
8

Pacotes Debian e Ubuntu podem desencadear a criação de /var/run/reboot-required*seus postinstarquivos executando o script auxiliar/usr/share/update-notifier/notify-reboot-required

Assim, a maneira "oficial" de processar as reinicializações é tratada pelo mantenedor do pacote. Eu já fiz isso anteriormente em um script comparando o tempo inicializado com o mtimes no / boot.

chrishiestand
fonte
4
#!/bin/bash
if [ ! -f /var/run/reboot-required ]; then
        # no reboot required (0=OK)
        echo "OK: no reboot required"
        exit 0
else
        # reboot required (1=WARN)
        echo "WARNING: `cat /var/run/reboot-required`"
        exit 1
fi
Damian
fonte