it-swarm.dev

Jak mohu z příkazového řádku zjistit, zda stroj vyžaduje restart?

Když na Ubuntu Desktop nainstalujete určité aktualizace (např. Nové jádro), zobrazí se upozornění, že je třeba restartovat počítač (v Lucidu ikona odhlášení zbarví červeně).

Jak mohu z příkazového řádku zkontrolovat, zda Ubuntu server vyžaduje restartování?

Mohl bych se zeptat na 'Požadovaný restart systému' v /etc/motd, ale rád bych řešení, které je elegantnější. Chci také řešení, které funguje ve starších verzích, např. Hardy (8,04 LTS).

276
Marius Gedminas

Můžete jednoduše zkontrolovat, zda soubor /var/run/reboot-required existuje nebo ne.

Například kterýkoli z nich by vám řekl „žádný takový soubor“ nebo „soubor nebyl nalezen“, pokud není třeba restartovat, jinak (pokud potřebujete restartovat) soubor existuje a tyto příkazy by zobrazovaly informace o souboru:

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

V bash skriptu můžete použít:

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

V balíčku debian-goodies je příkaz s názvem checkrestart, což je docela užitečné. Jeho výstup vám pomůže vyhnout se úplnému restartu.

Říká vám, které spuštěné aplikace načtou sdílené knihovny, které byly upgradovány během běhu aplikace. Poté restartujte aplikace a služby ručně a vyhněte se úplnému restartování. Nepomáhá však s upgradem jádra.

45
aquaherd

Normálně, pokud soubor

/var/run/reboot-required 

existuje, měli byste restartovat. Pomocí tohoto jednoduchého příkazu v terminálu gnome můžete zjistit, zda tento soubor existuje.

ls /var/run/reboot-required
34
kone4040

Stejně jako nejpřímější metody, které napsali jiní, je užitečná indikace, pokud použijete byob - sadu skriptů, díky nimž bude obrazovka GNU=) o něco příjemnější pro uživatele. V dolní části obrazovky je zobrazen soubor informací, který může zahrnovat, zda je třeba restartovat počítač - spolu s tím, zda jsou k dispozici aktualizace, čas, dostupnost, použitá paměť ...

Na tomto snímku obrazovky můžete vidět z 199! ve spodním řádku s červeným pozadím je k dispozici 199 aktualizací. A !!znamená, že některé jsou aktualizace zabezpečení . Nabídka v popředí určuje, která stavová oznámení se mají zobrazit.

Pokud je vyžadován restart, bude to označeno symbolem (R) zobrazené ve spodním pruhu s bílým textem na modrém pozadí. Více podrobností a dalších ukazatelů lze přečíst na stránce byobu man page .

screenshot

18
Hamish Downer

Pokud máte nainstalované společné balíčky reboot-notifier nebo update-notifier-common, získáte soubory/var/run/reboot-required a /var/run/reboot-required.pkgs

reboot-notifier je novější v Ubuntu Wily a Xenial. Debian se táhne, ale v jessie-backports

update-notifier-common Je starší, ve všech verzích Ubuntu včetně Xenial a Debian Wheezy. Ne v Debian Stretch nebo Jessie.

(Balíček pro restartování a oznámení je na pozadí https://feeding.cloud.geek.nz/posts/introducing-reboot-notifier/ )

Pokud nemáte nainstalované tyto balíčky, můžete porovnat verzi nainstalovaného balíčku linux se spuštěnou verzí:

[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)

Zde vidíte, že nejnovější nainstalované jádro je 3.16.7-ckt20-1 + deb8u4, ale běh jádra je 3.16.7-ckt20-1 + deb8u3. Tento systém tedy potřebuje restart. U4 vs u3 přímo na konci.

Možná budete muset posouvat pole výše. Ve verzi/proc/je důležitá verze na konci řádku.

Velmi malá změna kódu verze je typická pro aktualizaci bezpečnostního jádra Debianu.

needrestart

Další možností je instalace balíčku needrestart.

Sudo apt-get install needrestart
Sudo needrestart -k

Zdá se, že funguje, i když je needrestart nainstalován po aktualizaci jádra.

11
Tim Bray

The /etc/motd_ soubor získá informace o tom, zda je třeba restartovat z /var/run/reboot-required soubor.

Obsah tohoto souboru v terminálu můžete zkontrolovat pomocí cat /etc/motd příkaz

9
ajmitch

Do svého souboru .bash-aliasy jsem přidal následující:

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

Vypadalo to jednodušší než instalace balíčku pro tento relativně jednoduchý úkol. Pak jen běžím:

[email protected]:~$ rr
No reboot needed
[email protected]:~$ 
8
Capricorn1

Špatné mužské řešení:

#!/bin/bash
default=$(sed -n 's/^default[   ]*\([0-9][0-9]*\).*/\1/p' /boot/grub/menu.lst | tail -1)
if [ "$default" = "" ]; then default=0; fi

want=$(sed -n 's/^kernel[       ]*\/boot\/vmlinuz-\([^  ]*\).*/\1/p' /boot/grub/menu.lst | sed -n "$((default+1))p")

running=$(uname -r)

if [ "$running" = "$want" ]
then
        : OK, do nothing
else
        echo "Running $running, want $want. Reboot required."
fi

(Upozornění: Tři případy hranatých závorek s mezerou uvnitř by měly být "[<space> <tab>]".)

1