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

217

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

Come posso controllare, dalla riga di comando, se un server di Ubuntu 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).

    
posta Marius Gedminas 28.07.2010 - 23:49

8 risposte

254

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

Ad esempio, qualcuno di questi ti direbbe "nessun file di questo tipo" o "file non trovato" se non hai bisogno di riavviare, altrimenti (se devi riavviare) il file esiste e questi comandi mostrerebbero informazioni su il 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
    
risposta data Weboide 29.07.2010 - 00:02
39

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

    
risposta data aquaherd 09.09.2011 - 16:51
32

Normalmente se il file

/var/run/reboot-required 

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

ls /var/run/reboot-required
    
risposta data kone4040 28.07.2010 - 23:59
17

Oltre ai metodi più diretti scritti da altri, c'è un'indicazione utile se usi byobu - una serie di script per creare 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 questa schermata puoi vedere da 199! nella riga inferiore con lo sfondo rosso che sono disponibili 199 aggiornamenti e ! significa che alcuni sono aggiornamenti di sicurezza. Il menu in primo piano sta selezionando quali notifiche di stato dovrebbero essere visualizzate.

Se è richiesto 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 nella pagina manobu .

    
risposta data Hamish Downer 29.07.2010 - 19:59
9

Il file /etc/motd riceve le sue informazioni sull'eventuale necessità di riavvio dal file /var/run/reboot-required .

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

    
risposta data ajmitch 28.07.2010 - 23:53
6

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 eseguo semplicemente:

[email protected]:~$ rr
No reboot needed
[email protected]:~$ 
    
risposta data Capricorn1 16.12.2016 - 14:22
5

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

reboot-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.

(Esiste un po 'di sottofondo al pacchetto di riavvio del notificatore in link )

Se non hai installato questi pacchetti, puoi confrontare la versione del pacchetto linux installato, con la versione in esecuzione:

[email protected]:~$ 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)
[email protected]:~$ more /proc/version
Linux version 3.16.0-4-amd64 ([email protected]) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian <b>3.16.7-ckt20-1+deb8u3</b> (2016-01-17)

Qui puoi vedere 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 contro u3 alla fine.

Potrebbe essere necessario scorrere la casella sopra. 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 per la sicurezza di Debian.

needrestart

Un'altra opzione è installare il pacchetto needrestart .

sudo apt-get install needrestart
sudo needrestart -k

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

    
risposta data Tim Bray 06.03.2016 - 22:48
-1

Non una risposta alla domanda, ma un avvertimento relativo a diverse risposte: /var/run/reboot-required è non una fonte attendibile di un effettivo riavvio o meno.

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

    
risposta data tink 14.09.2017 - 09:09

Leggi altre domande sui tag