Domanda Come posso dire, dalla riga di comando, se la macchina richiede un riavvio?


Quando installi determinati aggiornamenti (ad esempio un nuovo kernel) in Ubuntu Desktop, ottieni un'indicazione che è richiesto il riavvio (in Lucido, l'icona di disconnessione diventa rossa).

Come posso controllare, dalla riga di comando, se un Ubuntu server richiede un riavvio?

Potrei grep per "Riavvio del sistema richiesto" in /etc/motd, ma mi piacerebbe una soluzione più elegante. Inoltre, voglio una soluzione che funzioni in versioni precedenti, ad es. Hardy (8.04 LTS).


219
2017-07-28 21:49


origine


Se si sta mantenendo il server, si svilupperà presto anche il senso, se non l'aggiornamento richiede il riavvio. La maggior parte degli aggiornamenti non richiede il riavvio o il riavvio del servizio (dovrebbe essere automatico). - eXlin


risposte:


Puoi semplicemente controllare se il file /var/run/reboot-required esiste o no

Ad esempio, uno di questi potrebbe dire "nessun file di questo tipo" o "file non trovato" se non è necessario riavviare, altrimenti (se è necessario il riavvio) il file esisterà e questi comandi mostrerebbero informazioni sul file:

file /var/run/reboot-required
stat /var/run/reboot-required
ls /var/run/reboot-required

In uno script bash, puoi usare:

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi

257
2017-07-28 22:02



Funziona, e funziona anche su Hardy. (Non funziona su Dapper - 6.06 - che ho ancora su una macchina. Difficile.) Incidentalmente, il file / var / run / reboot-required è stato creato da / usr / share / update-notifier / notify-reboot -richiesto che viene richiamato da vari script del manutentore dei pacchetti. - Marius Gedminas
Funzionerebbe anche su Dapper se avessi installato il pacchetto update-notifier, tranne per il fatto che voleva buttare giù roba di GNOME di 120 megabyte nel mio vecchio server. - Marius Gedminas
Meglio installare update-notifier-common, non dipende da alcuna GUI (ma non esiste per Dapper). - Marius Gedminas
FWIW, update-notifier-common non è installato sul server Lucid per impostazione predefinita. - Marius Gedminas
Grazie! e il file /var/run/reboot-required.pkgs elencherà i pacchetti che richiedono il riavvio. - nealmcb


Nel pacchetto debian-goodies c'è un comando chiamato checkrestart che è abbastanza utile. Il suo output può aiutarti a evitare un riavvio completo.


39
2017-09-09 14:51



Come può farmi evitare un riavvio completo? - Oxwivi
Ti dice, quali applicazioni in esecuzione hanno caricato librerie condivise che sono state aggiornate durante l'esecuzione dell'applicazione. Quindi riavviare manualmente le applicazioni e i servizi ed evitare un riavvio completo. Tuttavia, non aiuta gli aggiornamenti del kernel. - aquaherd
Questa dovrebbe essere la risposta migliore. Molto utile. OpenSUSE ha uno strumento integrato (e ti aiuta anche come puoi eseguirlo). Vergogna, Ubuntu si limita a "riavviare, riavviare". Ad esempio, colord aveva bisogno di un riavvio qui. Quindi, non è necessario riavviare. - Shiki
@aquaherd Commento molto utile - potrebbe valere la pena trasferirlo nella tua risposta? - Duncan Jones


Normalmente se il file

/var/run/reboot-required 

esiste devi riavviare. Puoi vedere se questo file è lì usando questo semplice comando in gnome-terminal.

ls /var/run/reboot-required

32
2017-07-28 21:59



Questo file non sembra essere più creato dall'aggiornatore-notificatore-common che ha usato per crearlo. - Scott


Così come i metodi più diretti scritti da altri, c'è un'indicazione utile se si utilizza Byobu - una serie di script per rendere lo schermo GNU un po 'più user friendly. Mostra una serie di informazioni nella parte inferiore dello schermo e può includere se è necessario un riavvio - insieme a se gli aggiornamenti sono disponibili, il tempo, il tempo di attività, la memoria utilizzata ...

In questo screenshot puoi vedere dal 199! sulla linea di fondo con lo sfondo rosso che ci sono 199 aggiornamenti disponibili e il ! significa che alcuni sono aggiornamenti di sicurezza. Il menu in primo piano sta selezionando quali notifiche di stato dovrebbero essere visualizzate.

Se è necessario un riavvio, questo verrà indicato dal simbolo (R) visualizzato nella barra inferiore con testo bianco su sfondo blu. Maggiori dettagli e altri indicatori possono essere letti in pagina man di byobu.

byobu screenshot


17
2017-07-29 17:59





Il /etc/motd il file ottiene le sue informazioni su se è richiesto un riavvio /var/run/reboot-required file.

Puoi controllare il contenuto di questo file nel terminale usando cat /etc/motd comando


9
2017-07-28 21:53



update-notifier-common usato per creare questo ma non più - Scott


Ho aggiunto quanto segue al mio file .bash-alias:

alias rr='if [ -f /var/run/reboot-required ]; then echo "reboot required"; else echo "No reboot needed"; fi'

Sembrava più semplice dell'installazione di un pacchetto per questo compito relativamente semplice. Quindi corro:

you@somewhere:~$ rr
No reboot needed
you@somewhere:~$ 

6
2017-12-16 13:22





Se hai installato i programmi di riavvio-notifica o update-notifier-common, ottieni i file / var / run / reboot-required e /var/run/reboot-required.pkgs

riavvio-notifier è più recente in Ubuntu Wily e Xenial. Debian stretch, ma in jessie-backports

update-notifier-common È più vecchio, in tutte le versioni di Ubuntu incluso Xenial e Debian Wheezy. Non in Debian Stretch o Jessie.

(C'è un po 'di background nel pacchetto di reboot-notifier su https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/  )

Se non si dispone di questi pacchetti installati, è possibile confrontare la versione del pacchetto linux installato, con la versione in esecuzione:

tim@tramp:~$ dpkg -l linux-image-*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                              Version               Architecture          Description
+++-=================================-=====================-=====================-=======================================================================
ii  linux-image-3.16.0-4-amd64        3.16.7-ckt20-1+deb8u4 amd64                 Linux 3.16 for 64-bit PCs
ii  linux-image-amd64                 3.16+63               amd64                 Linux for 64-bit PCs (meta-package)
tim@tramp:~$ more /proc/version
Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian <b>3.16.7-ckt20-1+deb8u3</b> (2016-01-17)

Potete vedere qui che l'ultimo kernel installato è 3.16.7-ckt20-1 + deb8u4 ma il kernel in esecuzione è 3.16.7-ckt20-1 + deb8u3. Quindi questo sistema ha bisogno di un riavvio. L'u4 vs u3 alla fine.

Potrebbe essere necessario scorrere la casella in alto. Nella versione / proc /, è la versione prossima alla fine della linea che conta.

Il cambio di codice della versione molto minore è tipico di un aggiornamento del kernel di sicurezza Debian.

needrestart

Un'altra opzione è installare il needrestart pacchetto.

sudo apt-get install needrestart
sudo needrestart -k

Sembra funzionare anche se è stato installato needrestart dopo l'aggiornamento del kernel.


5
2018-03-06 21:48



Come si collega il tuo primo paragrafo alle versioni di Ubuntu? - muru
Buon punto Grazie. Avevo passato così tanto tempo a testare e provare i pacchetti che mi mancavano un po '. Ho modificato per rendere più chiaro e includere le informazioni sul pacchetto di Ubuntu. - Tim Bray
Verso l'8.04, dopo un aggiornamento che richiedeva un riavvio, il Cog diventava rosso. Come faccio a riprendere quel comportamento? - PenguinCSC
Ubuntu 14.04, ottengo dpkg-query: no packages found matching linux-image-* - the_nuts
Unknown option: k in Ubuntu 14.04. - Cees Timmerman


Non una risposta alla domanda, ma un avvertimento riguardo a molte delle risposte: /var/run/reboot-required è non una fonte affidabile di se è effettivamente necessario un riavvio.

Test semplice: quando diventa disponibile un nuovo kernel, installalo, riavvia. Dopo il riavvio, corri apt autoremove per sbarazzarsi di alcuni vecchi, non più necessari, kernel. Dopo averlo eseguito, verrà indicato che è necessario un riavvio, che è una totale assurdità.


-1
2017-09-14 07:09



Bene, la rimozione di un kernel genera nuovamente il file di configurazione di grub, dopo di che è probabilmente una buona idea riavviare, per verificare che è ancora possibile avviare. Almeno è così che sto giustificando questa (errata) funzionalità a me stesso. - Marius Gedminas