¿Cómo puedo saber, desde la línea de comandos, si la máquina requiere un reinicio?

218

Cuando instalas ciertas actualizaciones (por ejemplo, un kernel nuevo) en Ubuntu Desktop, obtienes una indicación de que es necesario reiniciar (en Lucid, el ícono de cerrar sesión se vuelve rojo).

¿Cómo puedo verificar, desde la línea de comandos, si un servidor de Ubuntu requiere un reinicio?

Pude grep por 'Se requiere reinicio del sistema' en /etc/motd , pero me gustaría una solución más elegante. Además, quiero una solución que funcione en versiones anteriores, p. Hardy (8.04 LTS).

    
pregunta Marius Gedminas 28.07.2010 - 21:49

8 respuestas

255

Simplemente puede verificar si el archivo /var/run/reboot-required existe o no.

Por ejemplo, cualquiera de estos le diría "no such such file" o "file not found" si no necesita reiniciar, de lo contrario (si necesita reiniciar) el archivo existiría y estos comandos mostrarían información sobre el archivo:

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

En un script bash, puede usar:

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
  echo 'reboot required'
fi
    
respondido por el Weboide 28.07.2010 - 22:02
39

En el paquete debian-goodies hay un comando llamado checkrestart que es bastante útil. Su salida puede ayudarlo a evitar un reinicio completo.

    
respondido por el aquaherd 09.09.2011 - 14:51
32

Normalmente, si el archivo

/var/run/reboot-required 

existe deberías reiniciar. Puede ver si este archivo está allí usando este simple comando en gnome-terminal.

ls /var/run/reboot-required
    
respondido por el kone4040 28.07.2010 - 21:59
17

Así como los métodos más directos escritos por otros, hay una indicación práctica si usas byobu - un conjunto de scripts para hacer una pantalla GNU un poco más amigable para el usuario. Muestra un conjunto de información en la parte inferior de la pantalla, que puede incluir si se requiere reiniciar, junto con si hay actualizaciones disponibles, la hora, el tiempo de actividad, la memoria utilizada ...

En esta captura de pantalla puede ver desde el 199! en la línea inferior con el fondo rojo que hay 199 actualizaciones disponibles, y el ! significa que algunas son actualizaciones de seguridad. El menú en primer plano selecciona qué notificaciones de estado se deben mostrar.

Si se requiere reiniciar, esto se indicará con el símbolo (R) que se muestra en la barra inferior con texto blanco sobre fondo azul. Se pueden leer más detalles y otros indicadores en la página del manual de bybu .

    
respondido por el Hamish Downer 29.07.2010 - 17:59
9

El archivo /etc/motd obtiene su información sobre si se requiere reiniciar desde /var/run/reboot-required file.

Puedes verificar el contenido de este archivo en la terminal usando cat /etc/motd command

    
respondido por el ajmitch 28.07.2010 - 21:53
6

Agregué lo siguiente a mi archivo .bash-aliases:

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

Parecía más simple que instalar un paquete para esta tarea relativamente simple. Entonces solo corro:

you@somewhere:~$ rr
No reboot needed
you@somewhere:~$ 
    
respondido por el Capricorn1 16.12.2016 - 13:22
5

Si tiene instalados los paquetes reiniciar-notificador o actualizar-notificador-común, obtendrá los archivos / var / run / reboot-required y /var/run/reboot-required.pkgs

reiniciar-notificador es más nuevo en Ubuntu Wily y Xenial. Estiramiento de Debian, pero en jessie-backports

update-notifier-common Es anterior a todas las versiones de Ubuntu, incluidas Xenial y Debian Wheezy. No en Debian Stretch o Jessie.

(Hay algunos antecedentes del paquete de reinicio-notificación en enlace )

Si no tiene estos paquetes instalados, puede comparar la versión del paquete de Linux instalado, con la versión en ejecución:

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)

Puede ver aquí que el último kernel instalado es 3.16.7-ckt20-1 + deb8u4, pero el kernel que se ejecuta es 3.16.7-ckt20-1 + deb8u3. Entonces este sistema necesita un reinicio. El u4 vs u3 justo al final.

Es posible que deba desplazarse por el cuadro de arriba. En la / proc / versión, es la versión cerca del final de la línea lo que importa.

El cambio de código de versión menor es típico de una actualización de kernel de seguridad de Debian.

needrestart

Otra opción es instalar el paquete needrestart .

sudo apt-get install needrestart
sudo needrestart -k

Parece que funciona incluso si needrestart se instaló después de que se actualizó el kernel.

    
respondido por el Tim Bray 06.03.2016 - 21:48
-1

No es una respuesta a la pregunta, sino una advertencia sobre varias de las respuestas: /var/run/reboot-required es no una fuente confiable de si se requiere reiniciar o no realmente.

Prueba simple: cuando un kernel nuevo esté disponible, instálelo, reinicie. Después del reinicio, ejecute apt autoremove para deshacerse de algunos kernels viejos, ya no necesarios. Después de que haya ejecutado eso, indicará que se requiere un reinicio, lo cual es una completa tontería.

    
respondido por el tink 14.09.2017 - 07:09

Lea otras preguntas en las etiquetas